由于www用户和root用户(比如command的cli进程日志)都有可能对log文件进行读写。

如果是由www用户创建的log文件,不会出任何问题。

但是如果是先由root用户创建的log文件,然后再到www用户角色去写,就会出问题了

因为一般默认创建的log文件的权限是  -rw-r--r-

也就是www没有权限去写入root用户创建的log文件。

网上的方法大体就是像下面代码一样在mkdir的时候修改目录的权限

//thinkphp/library/think/log/driver/File.php
$destination = $this->getMasterLogFile(); $path = dirname($destination);
if (PHP_SAPI != 'cli') {
!is_dir($path) && mkdir($path, 0755, true);
}else{
!is_dir($path) && mkdir($path, 0777, true) && chmod($path, 0777);
}

但是上面只能修改文件夹的权限,并没有修改文件夹下具体的.log文件的权限。

【解决办法】:

修改文件:\thinkphp\library\think\log\driver\File.php里的write()函数

protected function write($message, $destination, $apart = false, $append = false)
{
...
if (PHP_SAPI == 'cli') {
$message = $this->parseCliLog($info);
} else {
// 添加调试日志
$this->getDebugLog($info, $append, $apart); $message = $this->parseLog($info);
} //return error_log($message, 3, $destination); /** 解决root生成的文件,www用户没有写权限的问题 by Werben 20190704 begin */
if (!is_file($destination)) {
$first = true;
} $ret = error_log($message, 3, $destination); try {
if (isset($first) && is_file($destination)) {
chmod($destination, 0777);
unset($first);
}
} catch (\Exception $e) { }
return $ret;
/** 解决root生成的文件,www用户没有写权限的问题 by Werben 20190704 end */
...
}

最新文章

  1. About_PHP_文件的上传
  2. javaScript 将json字符串转换为json对象的方法解析
  3. 实例讲解表单验证插件Validation的应用
  4. dedecms数据库表前缀不一样怎么还原数据
  5. BizTalk开发系列(十九) BizTalk命名规范
  6. Spring中DispacherServlet、WebApplicationContext、ServletContext的关系
  7. Windows Azure® 由世纪互联运营发布MySQL Database on Azure正式商用版
  8. sb 讲解 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
  9. php安装过程中遇到的需要安装的问题
  10. C#使用Expand、Shell32解压Cab、XSN文件
  11. windows 编程 —— 子窗口类别化(Window Subclassing)
  12. MVC自学第四课
  13. OJ题:奇偶归一猜想——求归一过程中的最大值
  14. PHP 报错--Array to string conversion,请用print_r() 来输出数组
  15. 小议SQL数据插入
  16. [LeetCode] Escape The Ghosts 逃离鬼魂
  17. vue 常用手册
  18. Shiro笔记(六)Shiro标签的使用
  19. linux的system () 函数详解
  20. Linux基础命令---文本显示tac

热门文章

  1. devstack cinder-volume服务状态为down
  2. Java Collection Framework 备忘点
  3. 生产环境缺陷来源VS 缺陷管理响应机制
  4. Leetcode题目283.移动零(简单)
  5. mysql服务器变量、缓存及索引
  6. 如何卸载oracle11g
  7. shell命令:getevent和sendevent
  8. CSS — 隐藏滚动条,依旧可以滚动
  9. [Java复习] JVM
  10. python flask url参数