代码之家  ›  专栏  ›  技术社区  ›  Tisch

PHP文件权限…是否正在“写入”?

  •  0
  • Tisch  · 技术社区  · 16 年前

    我正在尝试为我一直在使用的系统编写安装脚本。脚本将一些默认文件从一个位置复制到另一个位置,并为它们创建各种文件夹。我有这一点工作处理,但唯一的问题是,当我通过FTP登录,我不能编辑或删除PHP已为我移动的文件。

    如果我通过终端登录,我可以很高兴地“sudo chmod-R 777[dir]”并且问题消失了,所以问题是:

    PHP端缺少什么?

    我的权限功能如下:

    function set_permissions($file) 
    {
      if (file_exists($file)):
        chmod($file,0777);  
      endif;                
    }
    

    我知道将权限设置为777并不是100%理想,但我只是想在PHP为我移动文件后,通过FTP编辑文件。

    希望我说得够清楚。这让我现在很困惑,所以非常感谢您的帮助:)

    汤姆

    编辑: 整个过程如下:

    mkdir($root_dir, 0777);
    mkdir($images_dir, 0777);
    if (!copy($orig_logo, $new_logo)) 
    {
      echo "failed to copy $orig_logo...";
    } 
      // see function above for details on set_permissions...       
      $this->set_permissions($new_logo);
    }
    

    编辑 :

    -rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css
    

    我登录并更改后的文件具有:

    -RWXRWX 1 www data www data 2739 2009-08-26 01:45 base.css
    

    该系统是一个内容管理系统,允许您通过管理区域编辑和删除文件,而且奇怪的是,它运行良好。似乎这些文件不知何故被其他人锁在了外面 阿帕奇

    3 回复  |  直到 16 年前
        1
  •  1
  •   riotera    16 年前

        2
  •  1
  •   Jeremy L    16 年前

    听起来你的目录也需要写权限。

        3
  •  1
  •   too much php    16 年前

    如果可以的话 chmod -R 777 在运行之前,PHP设置了哪些权限 chmod 显然不是777。我猜您的PHP代码实际上并没有更改权限。

    set_permissions() 函数太害怕警告您。您应该按照以下方式重写它:

    function set_permissions($file) 
    {
      if (!file_exists($file))
        throw new Exception(__FUNCTION__ . "() file doesn't exist! '$file'");
      chmod($file,0777);
      error_log("chmod 777 $file"); // debug
    }
    

    这允许您查看发生了什么,如果文件名不正确,您肯定会注意到。