我的使用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}
答案 0 :(得分:1)
问题是在使用Docker编译容器的映像时发生的。基本上,权限被覆盖,所有者不是“ www-data”。我只需要向Dockerfile中的“ www-data”添加适当的所有者权限。