thinkphp5在cli模式下日志的bug
适用版本:
目前仅看了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;
如此,完美解决。
- 上一篇: 没有了
- 下一篇: 使用PHP获取某个类中的全部常量