Приложение на основе CakePHP выбрасывает 500 Ошибка сервера по требованию Cache-Class - PullRequest
1 голос
/ 16 февраля 2011

Я пытаюсь запустить приложение на основе CakePHP. это оно: Информационный бюллетень Mailer v1.1

Я пытаюсь запустить это здесь: mailer.dasministerium.com

Но, как вы видите, все, что я получаю, это внутренняя ошибка сервера 500.

Я отследил эту ошибку до файла: cake/libs/cache.php строка 203

$core = App::core();
$path = $core['libs'][0] . 'cache' . DS . strtolower($name) . '.php';
if (file_exists($path)) {
    require $path;
    return true;
}

где строка 203: require $path;

Чтобы отследить это, я умираю () d для этой строки и получил сообщение die (). Die () после этой строки привел к 500 Ошибка, но die () в этом требуемом файле (cake/libs/cache/file.php) дал мне 500 тоже.
Таким образом, все это действительно терпит крах при этом.

Я использую Ubuntu 8.04 LTS 64Bit, PHP 5.2.4 (как модуль apache, НЕ fast-cgi)

Есть идеи, как это запустить?

Заранее спасибо! David


EDIT:

После распечатки всех ошибок в файл ошибок я нашел это:
PHP Fatal error: Class 'CakeLog' not found in /var/www/vhosts/dasministerium.com/subdomains/mailer/httpdocs/cake/libs/cache/file.php on line 83

К сожалению, в этом файле вообще нет ссылки на CakeLog ... так: wtf?!


РЕДАКТИРОВАТЬ 2:

var_dump(class_exists('CakeLog')); // this before the crashing 
                                   // require() returns true!

РЕДАКТИРОВАТЬ ФИНАЛ!

Это проблема cakePHP <-> eAccelerator .... РЕШЕНО

Ответы [ 3 ]

2 голосов
/ 16 февраля 2011

решено: это была ошибка eAccelerator. исправил это с небольшим взломом ...

Решение:

открыть /cake/libs/cake-log.php прокрутить до самого низа, затем заменить

if (!defined('DISABLE_DEFAULT_ERROR_HANDLING')) {
    set_error_handler(array('CakeLog', 'handleError'));
}

с:

if (!defined('DISABLE_DEFAULT_ERROR_HANDLING')) {
    $cakeLog =& CakeLog::getInstance();
    set_error_handler(array(&$cakeLog, 'handleError'));
}

вот и все:)

0 голосов
/ 02 августа 2014

Я заметил, что cakephp 2.x может возвращать статус http 500, когда отсутствует «просмотр» на контроллере.Кажется, это происходит «случайно», так как некоторые контроллеры без представления возвращают статус http 200.

В любом случае, для решения этой проблемы http status 500 убедитесь, что все ваши контроллеры имеют представление, связанное с ним (вы увидитеошибка внизу страницы, если нет представления, связанного с контроллером).

0 голосов
/ 08 декабря 2011

Это решение для Cake1.3 (и, может быть, новее).

Как насчет 1.2?

Нет строки:

if (!defined('DISABLE_DEFAULT_ERROR_HANDLING')) {
    set_error_handler(array('CakeLog', 'handleError'));
}

в cake_log.phpфайл.

...