我正在尝试运行基于CakePHP的应用程序。 就是这样:Newsletter 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错误,但在所需文件(cake/libs/cache/file.php
)中的die()也给了我500。
所以整件事情真的让人感到震惊。
我正在运行Ubuntu 8.04 LTS 64Bit,PHP 5.2.4(作为apache模块,不是fast-cgi)
任何想法如何让这个运行?
提前致谢! 大卫
编辑:
将所有错误打印到错误文件后,我发现了这个:
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问题....已解决
答案 0 :(得分:2)
解决:这是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'));
}
就是这样:))
答案 1 :(得分:0)
该解决方案适用于Cake1.3(可能更新)。
1.2怎么样?
没有线:
if (!defined('DISABLE_DEFAULT_ERROR_HANDLING')) {
set_error_handler(array('CakeLog', 'handleError'));
}
在cake_log.php文件中。
答案 2 :(得分:0)
我注意到,当控制器没有“视图”时,cakephp 2.x可能会返回http状态500。它似乎是“随机出现”,因为一些没有视图的控制器返回http状态200。
无论如何,要解决此http状态500问题,请确保所有控制器都有与之关联的视图(如果没有与控制器关联的视图,您将在页面底部看到错误。)