1

我正在尝试运行基于 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;

为了追查这一点,我在这条线之前 die()d,并得到了我的 die() 消息。
在此行之后的 die()ing 导致了 500 错误,但在该所需文件 ( cake/libs/cache/file.php) 中的 die()ing 也给了我 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 问题.... 已解决

4

3 回答 3

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'));
}

就是这样 :)

于 2011-02-16T18:19:50.417 回答
0

该解决方案适用于 Cake1.3(也许是更新的)。

1.2呢?

没有行:

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

在 cake_log.php 文件中。

于 2011-12-08T15:57:57.737 回答
0

我注意到当控制器没有“视图”时,cakephp 2.x 可能会返回 http 状态 500。它似乎是“随机发生的”,因为一些没有视图的控制器返回 http 状态 200。

无论如何,要解决这个 http 状态 500 问题,请确保您的所有控制器都有一个与之关联的视图(如果没有与控制器关联的视图,您将在页面底部看到一个错误)。

于 2014-08-02T11:09:28.130 回答