【问题标题】:Yii2 Unable to append to log fileYii2 无法追加到日志文件
【发布时间】: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 的权限更改为644logs 目录到755 并检查它现在是否有效?先到runtime文件夹根目录下输入chmod 755 logs再到logs目录下写chmod 644 app.log
  • 谢谢。使用 Docker 编译容器的映像时发生此问题。基本上,权限被覆盖,所有者不是“www-data”。我只需要在 Dockerfile 中添加正确的所有者。
  • 嗯,你从来没有说过关于 docker 的事
  • 确实如此。我的错。 :)

标签: yii2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多