• 宝塔下thinkphp5日志文件权限的问题,文件缓存也一样修改


    三个办法解决:

    1,修改php-fpm配置文件,把用户改为root

    2,把www拉入root用户组下,sudo -g root www

    3,修改源码如下

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

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

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

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

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

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

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

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

    【解决办法】:

    修改文件: hinkphplibrary hinklogdriverFile.php里的write()函数

    1.  
      protected function write($message, $destination, $apart = false, $append = false)
    2.  
      {
    3.  
      ...
    4.  
      if (PHP_SAPI == 'cli') {
    5.  
      $message = $this->parseCliLog($info);
    6.  
      } else {
    7.  
      // 添加调试日志
    8.  
      $this->getDebugLog($info, $append, $apart);
    9.  
       
    10.  
      $message = $this->parseLog($info);
    11.  
      }
    12.  
       
    13.  
      //return error_log($message, 3, $destination);
    14.  
       
    15.  
      /** 解决root生成的文件,www用户没有写权限的问题 by Werben 20190704 begin */
    16.  
      if (!is_file($destination)) {
    17.  
      $first = true;
    18.  
      }
    19.  
       
    20.  
      $ret = error_log($message, 3, $destination);
    21.  
       
    22.  
      try {
    23.  
      if (isset($first) && is_file($destination)) {
    24.  
      chmod($destination, 0777);
    25.  
      unset($first);
    26.  
      }
    27.  
      } catch (Exception $e) { }
    28.  
      return $ret;
    29.  
      /** 解决root生成的文件,www用户没有写权限的问题 by Werben 20190704 end */
    30.  
      ...
    31.  
      }
  • 相关阅读:
    多种 网页文本编辑器 分析
    struts2 令牌 实现源代码 JSP
    ibatis 数据库时间 插入数据
    Eclipse/Myeclipse生成serialVersionUID方法
    SSM框架整合遇到的问题
    搭建Elasticsearch5.6.8 分布式集群
    使用SuperWebSocket 构建实时 Web 应用
    HAPROXY
    .NET面试题系列(二)GC
    MongoDB-3.4集群搭建:分片
  • 原文地址:https://www.cnblogs.com/caicaizi/p/13576969.html
Copyright © 2020-2023  润新知