Es ist ein bisschen schwierig, drupal von curl zu installieren, da das Installationsskript verschiedene Umleitungen hat. Sie müssen Cookies zu bestimmten Zeitpunkten lesen und schreiben. Allerdings: Ich habe ein Curl-Skript erstellt, das Drupal von der Kommandozeile aus installiert :) Hinweis: Nur mit Drupal-6.x, PHP5 und der PHP-Curl-Erweiterung getestet.
Bevor Sie dies tun, sollten Sie unbedingt den Befehl drush site-install in Betracht ziehen!
Dies wurde am drupal-6.20 mit PHP 5.3 getestet. Druapl 7 muss Javascript aktiviert haben, soweit ich sehen kann. Und deshalb nicht von curl installieren! Sie sollten auch beachten, dass die korrekten Dateien für die Datei settings.php und der Dateiordner festgelegt werden müssen, damit dies funktioniert (andernfalls werden Fehler angezeigt und curl wird nicht abgeschlossen!)
Zuerst fügen wir eine Curl-Klasse hinzu.
<?php // class found on php.net // http://php.net/manual/en/book.curl.php class mycurl { protected $_useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1'; protected $_url; protected $_followlocation; protected $_timeout; protected $_maxRedirects; protected $_cookieFileLocation = './cookie.txt'; protected $_post; protected $_postFields; protected $_referer ="http://www.google.com"; protected $_session; protected $_webpage; protected $_includeHeader; protected $_noBody; protected $_status; protected $_binaryTransfer; public $authentication = 0; public $auth_name = ''; public $auth_pass = ''; public function useAuth($use){ $this->authentication = 0; if($use == true) $this->authentication = 1; } public function setName($name){ $this->auth_name = $name; } public function setPass($pass){ $this->auth_pass = $pass; } public function __construct($url,$followlocation = true,$timeOut = 30,$maxRedirecs = 4,$binaryTransfer = false,$includeHeader = true,$noBody = false) { $this->_url = $url; $this->_followlocation = $followlocation; $this->_timeout = $timeOut; $this->_maxRedirects = $maxRedirecs; $this->_noBody = $noBody; $this->_includeHeader = $includeHeader; $this->_binaryTransfer = $binaryTransfer; $this->_cookieFileLocation = dirname(__FILE__).'/cookie.txt'; } public function setReferer($referer){ $this->_referer = $referer; } public function setCookiFileLocation($path) { $this->_cookieFileLocation = $path; } public function setPost ($postFields) { $this->_post = true; $this->_postFields = $postFields; } public function setUserAgent($userAgent) { $this->_useragent = $userAgent; } public function createCurl($url = 'nul') { if($url != 'nul'){ $this->_url = $url; } $s = curl_init(); curl_setopt($s,CURLOPT_URL,$this->_url); curl_setopt($s,CURLOPT_HTTPHEADER,array('Expect:')); curl_setopt($s,CURLOPT_TIMEOUT,$this->_timeout); curl_setopt($s,CURLOPT_MAXREDIRS,$this->_maxRedirects); curl_setopt($s,CURLOPT_RETURNTRANSFER,true); curl_setopt($s,CURLOPT_FOLLOWLOCATION,$this->_followlocation); curl_setopt($s,CURLOPT_COOKIEJAR,$this->_cookieFileLocation); curl_setopt($s,CURLOPT_COOKIEFILE,$this->_cookieFileLocation); if($this->authentication == 1){ curl_setopt($s, CURLOPT_USERPWD, $this->auth_name.':'.$this->auth_pass); } if($this->_post) { curl_setopt($s,CURLOPT_POST,true); curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields); } if($this->_includeHeader) { curl_setopt($s,CURLOPT_HEADER,true); } if($this->_noBody) { curl_setopt($s,CURLOPT_NOBODY,true); } /* if($this->_binary) { curl_setopt($s,CURLOPT_BINARYTRANSFER,true); } */ curl_setopt($s,CURLOPT_USERAGENT,$this->_useragent); curl_setopt($s,CURLOPT_REFERER,$this->_referer); $this->_webpage = curl_exec($s); $this->_status = curl_getinfo($s,CURLINFO_HTTP_CODE); curl_close($s); } public function getHttpStatus() { return $this->_status; } public function __tostring(){ return $this->_webpage; } }
Und jetzt erstellen wir das Skript mit der curl-Klasse.
<?php include_once "curl.inc"; // your site $site_url = 'http://drupal'; // profile $profile = 'default'; // locale $locale = 'en'; // database $db_path = 'drupal'; // database user $db_user = 'root'; // database pass $db_pass = 'password'; // database host $db_host = 'localhost'; // name of site $site_name = 'site_name'; // site email $site_mail = 'site_mail@site.com'; // admin account name $account_name = 'admin'; // admin account email $account_mail = 'admin@admin.dk'; // admin account pass $account_pass = 'admin1234'; // date time zone $date_default_timezone = '-39600'; // use clean url. $clean_url = '1'; // update status module $update_status_module = '1'; // end of settings // create a url for curling db settings $url_str = "db_path=$db_path&"; $url_str.= "db_user=$db_user&"; $url_str.= "db_pass=$db_pass&"; $url_str.= "db_host=$db_host&"; $url_str.= "db_prefix=&"; $url_str.= "db_port=&"; $url_str.= "op=Save and continue" . "&"; $url_str.= "form_id=install_settings_form"; $url_str = urlencode($url_str); $url = "$site_url/install.php?profile=$profile"; $curl = new mycurl($url, true); $curl->createCurl(); echo $curl; $url = "$site_url/install.php?profile=$profile&locale=$locale"; $curl = new mycurl($url, true); $curl->setPost($url_str); $curl->createCurl(); echo $curl; $url = "$site_url/install.php?profile=$profile&locale=$locale&op=do_nojs&id=1"; $curl = new mycurl($url, true); $curl->setPost($url_str); $curl->createCurl(); echo $curl; $url = "$site_url/install.php?profile=$profile&locale=$locale&op=finished&id=1"; $curl = new mycurl($url, true); $curl->setPost($url_str); $curl->createCurl(); echo $curl; // set settings for loading database with site base settings $url_str = "site_name=$site_name&"; $url_str.= "site_mail=$site_mail&"; $url_str.= "account[name]=$account_name&"; $url_str.= "account[mail]=$account_mail&"; $url_str.= "account[pass][pass1]=$account_pass&"; $url_str.= "account[pass][pass2]=$account_pass&"; $url_str.= "date_default_timezone=$date_default_timezone&"; $url_str.= "clean_url=$clean_url&"; $url_str.= "form_id=install_configure_form&"; $url_str.= "update_status_module[1]=$update_status_module"; $url = "$site_url/install.php?profile=default&locale=en"; $curl = new mycurl($url, true); $curl->setPost($url_str); $curl->createCurl(); echo $curl; die(); ?>
- Installieren Sie Drupal mit cURL