适用版本:
目前仅看了tp5.1的代码,但相信tp5应该是相似的

BUG描述:
在启用cli模式的情况下,因为cli命令行以root身份运行,在月初的时候,日志目录有可能是cli以root身份生成的,导致www用户无法写入日志。

解决方法:
1.如网上流传,在创建日志目录时,给目录777权限。

    if(PHP_SAPI != 'cli'){
        !is_dir($path) && mkdir($path, 0755, true);
        //by 周煜 cli模式 root用户产生文件夹导致php-fpm的www用户写入失败
    } else {
        !is_dir($path) && mkdir($path, 0777, true) && chmod($path, 0777);
    }

2.我觉得还是不够彻底,所以干脆从目录着手。直接把cli日志和普通的日志放在不同目录。如cli日志放在/runtime/log_cli/下,永远不存在www用户往里写入日志的问题。

        $logDir = PHP_SAPI == 'cli' ? 'log_cli' : 'log';
        $this->config['path'] = $this->app->getRuntimePath() . $logDir . DIRECTORY_SEPARATOR;

如此,完美解决。