Установка drupal из curl немного затруднителен из-за различных перенаправлений, которые делает скрипт установки. Вы также должны читать и писать куки в определенные моменты. Однако: я создал скрипт curl, который установит drupal из командной строки :) Примечание: Проверено только с drupal-6.x, php5 и расширением php curl.
Как примечание сайта, прежде чем делать это, вы должны рассмотреть возможность использования команды drush site-install!
Это было проверено на drupal-6.20 с PHP 5.3. Насколько мне известно, в Druapl 7 должен быть включен Javascript. И поэтому не будет устанавливать с локон! Вы также должны отметить, что для этой работы необходимо установить правильные файлы для settings.php и папки с файлами (в противном случае мы получим ошибки, а curl не завершится!)
Сначала мы добавляем класс curl.
<?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; } }
И теперь мы создаем скрипт с классом curl.
<?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(); ?>
- Установите Drupal с помощью cURL