trepwq
V2EX  ›  问与答

laravel 日志 owner 特殊情况下会变为 root,求解决办法

  •  
  •   trepwq · Aug 17, 2016 · 3085 views
    This topic created in 3580 days ago, the information mentioned may be changed or developed.

    laravel 日志每天一个文件,每天第一条记录是 prod.ERROR: Predis\Connection\ConnectionException: Error while reading line from the server.****vendor/predis/predis/src/Connection/AbstractConnection.php:168 的时候文件 owener 为 root ,导致之后日志写不进去报错,而日志第一条为正常业务日志时是没有问题的。 猜测是其他以 root 用户启动的进程创建了当天的日志文件,导致 owner 为 root 。 artisan 是 root 运行的,看起来像是 supervisor 启动的。 求解决办法。。

    Supplement 1  ·  Aug 17, 2016
    我把 supervisor 看护的 artisan 用户改为非 root 了,看看效果吧
    4 replies    2016-08-27 16:00:29 +08:00
    Dlad
        1
    Dlad  
       Aug 17, 2016
    我使用 laravel/console 时也曾遇到这个问题,同求最佳实践。
    noea
        2
    noea  
       Aug 17, 2016
    笨办法,
    crontab 12 点的时候,先看日志是否存在,否则, touch ,执行 chown 把日志 owner 改回去。
    icemanpro
        3
    icemanpro  
       Aug 17, 2016
    bootstrap/app.php 中 加上

    $app->configureMonologUsing(function(Monolog\Logger $monolog) {
    $filename = storage_path('logs/laravel-'.php_sapi_name().'.log');
    $handler = new Monolog\Handler\RotatingFileHandler($filename);
    $monolog->pushHandler($handler);
    });

    通过 php_sapi_name 生成不同的 log
    hanyouchun66
        4
    hanyouchun66  
       Aug 27, 2016
    php artisan 用了 root 用户执行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2508 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 01:33 · PVG 09:33 · LAX 18:33 · JFK 21:33
    ♥ Do have faith in what you're doing.