我在Kohana::$ log上收到错误消息“在非对象上调用成员函数add()”
没有登录application/logs
目录。我描述的错误位于apache error_log
上。看起来就是这样
这是我的错误 Controller 。
<?php
class Kohana_Exception extends Kohana_Kohana_Exception {
public static function handler(Exception $e) {
if (Kohana::DEVELOPMENT === Kohana::$environment) {
parent::handler($e);
} else {
try {
Kohana::$log->add(Log::ERROR, "own exception handler");
Kohana::$log->add(Log::ERROR, parent::text($e));
$attributes = array('action' => 500, 'message' => rawurlencode($e->getMessage()));
if ($e instanceof HTTP_Exception) {
$attributes['action'] = $e->getCode();
}
// Error sub-request.
echo Request::factory(Route::get('error')->uri($attributes))->execute()->send_headers()->body();
}
catch(Exception $e) {
// Clean the output buffer if one exists
ob_get_level() and ob_clean();
// Display the exception text
echo parent::text($e);
// Exit with an error status
exit(1);
}
}
}
}
从代码看来,
Kohana::$log
尚未初始化。但是这段代码已经工作了很长时间了。现在是什么让它不起作用?我在上使用 PHP 5.3.13 使用 Kohana-3.2 Fedora 15
最佳答案
我已经解决了这个问题。如果任何其他kohana开发人员都遇到此问题,而他来自Google,那么这里就是解决方案。
从root shell运行以下命令。请记住,如果重新启动服务器,则必须再次运行它。
setsebool -P httpd_unified 1
其他信息:如何跟踪。
检查这些位置
/var/log/messages
。 如果是SElinux问题,则可以在
/var/log/messages
上找到日志条目。这就是我得到的。如前所述,运行
sealert -l 087dfdb5-c7de-4238-8e6b-a713213a456d
将显示我作为解决方案编写的命令。关于php - Kohana::$log上的Kohana错误 “Call to a member function add() on a non-object”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12013929/