Распаковал на хостинг свежий Drupal 7.8.
Открываю сайт — вижу пустой экран. Добавляю в index.php
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
// $Id: index.php,v 1.94 2007/12/26...
и вместо пустого экрана вижу ошибку:
Parse error: parse error, unexpected T_CLASS in /home/mainsite/public_html/site/includes/bootstrap.inc on line 283
Нашёл 2 возможные причины ошибки:
1) проблема в PHP 4.x. Нужно использовать PHP 5.2.5 и выше. На сервере PHP 5.2.16
2) добавить в .htaccess вот это:
SetEnv ZEND_OPTIMIZER 1
SetEnv MAGIC_QUOTES 1
SetEnv PHP_VER 5
Добавил, ничего не изменилось.
В то же время установка Drupal 6.22 запускается нормально.
На этом же хостинге есть другой сайт на D6, он работает без проблем.
UPD: оказался виновен хостер (предоставил PHP4, вместо обещанной пятой версии), подробности см. в комментарии ниже.
Комментарии
К слову, файл bootstrap.inc начиная с 283 строки выглядит так:
/**
* A cid to pass to cache_set() and cache_get().
*/
private $cid;
/**
* A bin to pass to cache_set() and cache_get().
*/
private $bin;
/**
* An array of keys to add to the cache at the end of the request.
*/
protected $keysToPersist = array();
/**
* Storage for the data itself.
*/
protected $storage = array();
/**
* Constructor.
*
* param $cid
* The cid for the array being cached.
* param $bin
* The bin to cache the array.
*/
public function __construct($cid, $bin) {
$this->cid = $cid;
$this->bin = $bin;
if ($cached = cache_get($this->cid, $this->bin)) {
$this->storage = $cached->data;
}
}
public function offsetExists($offset) {
return $this->offsetGet($offset) !== NULL;
}
public function offsetGet($offset) {
if (isset($this->storage[$offset]) || array_key_exists($offset, $this->storage)) {
return $this->storage[$offset];
}
else {
return $this->resolveCacheMiss($offset);
}
}
public function offsetSet($offset, $value) {
$this->storage[$offset] = $value;
}
public function offsetUnset($offset) {
unset($this->storage[$offset]);
}
Перезалейте заново друпал и не правьте index.php, а смотрите в логах PHP.
В общем, оказался виновен хостер.
Выяснил случайно, когда в отчёте о состоянии (после установки D6) увидел, что используется PHP 4.x, не смотря на то, что хостером заявлен PHP 5.x, и другой сайт на том же хостинге и аккаунте (!) вполне себе работает с PHP 5.x.
(если что, информацию о текущей версии PHP и много других деталей можно посмотреть на странице /admin/reports/status/php)
Написал в саппорт, поправили в течение дня.