我在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

其他信息:如何跟踪。

检查这些位置
  • Apache错误日志
  • Kohana在应用程序目录
  • 上记录日志(如果您记录调试信息)
  • 检查/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/

    10-12 06:23