【问题标题】:Yii framework: writing errors in apache log onlyYii 框架:仅在 apache 日志中写入错误
【发布时间】:2014-02-18 10:48:17
【问题描述】:

我想将有关 /protected/runtime 目录的 r/w 权限的错误写入 apache 错误日志,并且不向接口抛出任何异常。我应该怎么做才能解决我的“问题”?

谢谢你,对不起我的英语!


问题已通过以下方式解决:

error_log($message);

并在脚本尝试检查运行时文件夹或运行 file_put_contents 函数时删除 CException 调用

【问题讨论】:

    标签: php exception yii


    【解决方案1】:

    当调试关闭时,yii 使用(默认)站点/错误视图显示此错误,只需将其更改为不显示消息文本并显示通用内容(例如,如果代码 == 500 则显示“内部错误”)


    如果你想在 apache 日志中出现错误,我只看到有点不干净的方式,反正刚刚测试过,它可以工作。在 php.ini 中设置 display_errors = Offlog_errors = On 然后将处理错误的操作从 yii 更改为恢复默认处理程序并再次出现错误 - 它应该导致 apache 日志中的日志记录和浏览器中的空白屏幕,例如:

    public function actionError() {
        if (($error=Yii::app()->errorHandler->error)) {
            if (strpos($error['message'], 'runtime') !== false) {
                restore_error_handler();
                restore_exception_handler();
                user_error("Problem with runtime: " . $error['message'], E_USER_ERROR);
                exit();
            }
            if(Yii::app()->request->isAjaxRequest) {
                echo $error['message'];
            } else {
                $this->render('error', $error);
            }
        }
    }
    

    【讨论】:

    • 在 apache error.log 中显示 php 错误不是问题,问题是当运行时目录的权限被拒绝时写入错误。这个值已经在我的 php.ini 中了——没有结果。当我将 chmod 0666 设置为运行时目录时,界面中出现错误,而 apache error.log 中没有任何内容
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多