Php 科哈纳错误“;对非对象调用成员函数add();关于科哈纳::$log
我在Kohana::$log上收到错误“在非对象上调用成员函数add()” 没有登录Php 科哈纳错误“;对非对象调用成员函数add();关于科哈纳::$log,php,error-handling,kohana,fatal-error,Php,Error Handling,Kohana,Fatal Error,我在Kohana::$log上收到错误“在非对象上调用成员函数add()” 没有登录应用程序/logs目录。我描述的错误可以在apache错误日志中找到。这就是它的样子 [Fri Aug 17:07:09 2012][error][client MY.IPA.DDR.ESS]PHP致命错误:在第8行的/var/www/html/application/classes/kohana/exception.PHP中对非对象调用成员函数add() 这是我的错误控制器 <?php class Koh
应用程序/logs
目录。我描述的错误可以在apache错误日志中找到。这就是它的样子
[Fri Aug 17:07:09 2012][error][client MY.IPA.DDR.ESS]PHP致命错误:在第8行的/var/www/html/application/classes/kohana/exception.PHP中对非对象调用成员函数add()
这是我的错误控制器
<?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);
}
}
}
}
尝试查看是否:
Log::instance()->add(Log::ERROR, "own exception handler");
工作。当前的Kohana文档似乎表明使用$log仍然可以工作,但在异常处理之前可能会在某个地方被取消设置。但是,从日志类检索实例应该随时可用。我已经解决了这个问题。如果这个问题发生在任何其他kohana开发者身上,并且他来自谷歌,那么这里就是解决方案
从根shell运行以下命令。请记住,如果重新启动服务器,则必须再次运行它
setsebool -P httpd_unified 1
附加信息:如何追踪它。
检查这些位置
Apache错误日志
Kohana在应用程序目录上记录(如果您记录调试)
检查/var/log/messages
如果是SElinux问题,您将在/var/log/messages
上找到日志条目。这就是我得到的
setroubleshoot:SELinux正在阻止/usr/sbin/httpd对/var/www/html/应用程序/cache目录进行写访问。获取完整的SELinux消息。运行密封件-l 087dfdb5-c7de-4238-8e6b-a713213a456d
如前所述,运行sealert-l 087dfdb5-c7de-4238-8e6b-a713213a456d将显示我作为解决方案编写的命令。您可能有权限问题。在我的例子中,是httpd服务(apache2)无法访问项目文件。
这是一个残酷的解决方案(只有在您的安全状况允许的情况下才这样做):
$sudo chmod-R 0777/var/www/html/mysite/
发件人:
找到了问题。阻止缓存写操作的是SELinux。5个月后,我在同一个文件上得到了同样的错误!我在谷歌上搜索,这引出了我自己的问题:oBe小心chmod-R0777
:这通常是错误的。