首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kohana错误“对非对象上的成员函数add()的调用”在Kohana::$log上

Kohana错误“对非对象上的成员函数add()的调用”在Kohana::$log上
EN

Stack Overflow用户
提问于 2012-08-17 22:21:33
回答 3查看 2.6K关注 0票数 0

我在Kohana::$log上得到错误“调用非对象上的成员函数add()”

application/logs目录中没有登录。我描述的错误是在apache error_log上找到的。它就是这样出现的

Fri 17:07:09 2012 client MY.IPA.DDR.ESS PHP致命错误:在第8行的非对象上调用成员函数add()

这是我的错误控制器。

代码语言:javascript
复制
<?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似乎还没有初始化。但这段代码已经运行了很长时间。是什么让它不起作用的?

我使用Kohana-3.2PHP5.3.13在Fedora 15上使用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-17 23:38:56

我已经解决了这个问题。如果这个问题发生在任何其他kohana开发人员身上,而他是从google来到这里的,这就是解决方案。

从根shell运行以下命令。记住,如果重新启动服务器,就必须再次运行它。

代码语言:javascript
复制
setsebool -P httpd_unified 1

附加信息:如何追踪。

检查这些位置

  1. Apache错误日志
  2. 应用程序目录上的Kohana日志(如果您登录以进行调试)
  3. 检查一下/var/log/messages

如果它的SElinux问题,您将在/var/log/messages上找到日志条目。这就是我得到的。

Se疑难解答: /var/www/html/application/cache.目录下的SELinux正在阻止/usr/sbin/httpd写访问以获得完整的SELinux消息。运行-l 087dfdb5-c7de-4238-8e6b-a713213a456d

如前所述,运行sealert -l 087dfdb5-c7de-4238-8e6b-a713213a456d将显示我编写的作为解决方案的命令。

票数 1
EN

Stack Overflow用户

发布于 2012-08-17 23:09:04

试着看看是否:

代码语言:javascript
复制
Log::instance()->add(Log::ERROR, "own exception handler");

很管用。当前的Kohana文档似乎表明使用$log仍然有效,但是在异常处理之前它可能会被取消设置。但是,从Log类检索实例在任何时候都是可用的。

票数 0
EN

Stack Overflow用户

发布于 2017-09-12 13:42:04

你可能有权限问题。在我的例子中,无法访问项目文件的是httpd服务(apache2)。下面是一个残酷的解决方案(只有在安全情况允许的情况下才能这样做):

$ sudo 0777 /var/www/html/mysite/

来自:file gives "failed to open stream: Permission denied " error after all configurations i did

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12013929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档