【发布时间】:2019-04-28 16:05:51
【问题描述】:
我使用 Yii 2 高级模板的应用程序无法写入 app.log 文件。 frontend/runtime/logs 文件夹及其内容(app.log 文件)都有 www-data 有所有者(用户和组)。我尝试在文件夹和 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}
【问题讨论】:
-
我建议将
app.log的权限更改为644和logs目录到755并检查它现在是否有效?先到runtime文件夹根目录下输入chmod 755 logs再到logs目录下写chmod 644 app.log -
谢谢。使用 Docker 编译容器的映像时发生此问题。基本上,权限被覆盖,所有者不是“www-data”。我只需要在 Dockerfile 中添加正确的所有者。
-
嗯,你从来没有说过关于 docker 的事
-
确实如此。我的错。 :)
标签: yii2