Yii2无法附加到日志文件

时间:2019-04-28 16:05:51

标签: yii2

我的使用Yii 2高级模板的应用程序无法写入app.log文件。前端/运行时/日志文件夹及其内容(app.log文件)都具有www数据,拥有者(用户和组)。我曾尝试在文件夹和app.log文件上都设置完全权限777,以便进行调试,但是该应用程序仍然无法写入日志文件。

这是我当前在/frontend/config/main.php中的配置

'log' => [
    'traceLevel' => YII_DEBUG ? 3 : 0,
    'targets' => [
        [
            'class' => 'yii\log\FileTarget',
            'levels' => ['error', 'warning'],
        ],
        [
            'class' => 'yii\log\EmailTarget',
            'mailer' => 'mailer',
            'levels' => ['error', 'warning'],
            'message' => [
                'from' => 'admin@mydomain.com',
                'to' => ['logs@mydomain.com'],
                'subject' => 'Error / Warning',
            ],
        ],
    ],
],

这些是我在运行时文件夹中的权限:

drwxrwxr-x 2 www-data www-data 4096 Jan  10  2018 debug
drwxrwxrwx 2 www-data www-data 4096 Apr 28 15:46 logs

以及app.log文件:

-rwxrwxrwx 1 www-data www-data 174248 Jan  10  2018 app.log

这是应用程序无法写入日志文件时出现的错误:

[warning][yii\log\Dispatcher::dispatch] Unable to send log via yii\log\FileTarget: Exception (Invalid
Configuration) 'yii\base\InvalidConfigException' with message 'Unable
to append to log file:
/var/www/html/my-yii2-advanced/frontend/runtime/logs/app.log' 

in /var/www/html/my-yii2-advanced/vendor/yiisoft/yii2/log/FileTarget.php:109

Stack trace:
#0 /var/www/html/my-yii2-advanced/vendor/yiisoft/yii2/log/Target.php(133):
yii\log\FileTarget->export()
#1
/var/www/html/my-yii2-advanced/vendor/yiisoft/yii2/log/Dispatcher.php(189):
yii\log\Target->collect(Array, true)
#2 /var/www/html/my-yii2-advanced/vendor/yiisoft/yii2/log/Logger.php(177):
yii\log\Dispatcher->dispatch(Array, true)
#3
/var/www/html/my-yii2-advanced/vendor/yiisoft/yii2/base/ErrorHandler.php(113):
yii\log\Logger->flush(true)
#4 [internal function]:
yii\base\ErrorHandler->handleException(Object(yii\web\NotFoundHttpException))
#5 {main}

1 个答案:

答案 0 :(得分:1)

问题是在使用Docker编译容器的映像时发生的。基本上,权限被覆盖,所有者不是“ www-data”。我只需要向Dockerfile中的“ www-data”添加适当的所有者权限。