【问题标题】:chmod 777 in phpphp中的chmod 777
【发布时间】:2011-02-16 16:32:49
【问题描述】:

如果我使用 mkdir() 在 php 中创建一个文件夹,它具有 www-data : www-data 用户和 755 权限。

问题是我无法使用 ftp-user (zapbe:psasrv) 删除此文件夹 我尝试在 php 中使用 chmod($path, "0777") 修改文件夹,但这不起作用。

如何使创建的文件夹和上传的文件对 www-data 和 ftp 用户都可读/可删除?

【问题讨论】:

  • 您是否尝试过明确设置模式? mkdir("/path/to/my/dir", 0777);
  • 您需要目录的写权限才能删除文件。您的 FTP 用户是否对包含您要删除的目录的目录具有写入权限?

标签: php linux permissions chmod


【解决方案1】:
bool chmod ( string $filename , int $mode )

在 PHP 中,它们可能对安全性有一些限制,因此取决于您的配置,它可能无法正常工作。

上述函数返回一个布尔值,让您知道它是否已成功更改实体权限。

if(!chmod($directory,0777))
{
    echo "Unable to chmod $direcotry";
}

也是来自 PHP 的引用:

当前用户是运行 PHP 的用户。它可能与您用于正常 shell 或 FTP 访问的用户不同。在大多数系统上,只有拥有该文件的用户才能更改模式。

了解上面你应该看看chown

【讨论】:

    【解决方案2】:

    要删除目录,您需要对父目录而不是要删除的目录具有写入权限。为了提供对父级的写入访问权限,一个好的方法是使该父级由 www-data 和您的 ftp 用户都属于的某个组拥有,并且永远不要使用 777 权限。另外,请确保您的父文件夹没有设置粘性位。

    【讨论】:

      【解决方案3】:

      默认情况下,当您在 *nix 中创建文件夹时,其他用户将无法删除/修改该文件夹。

      要更改 www-data 创建文件夹的权限,请在浏览器的 php 脚本中运行命令,它应该会成功更新

      注意不要将新权限放在双引号中,它需要是 八进制数

      chmod($path, 0777);
      // not chmod($path, "0777);
      

      一旦你这样做,任何人都可以修改文件夹

      【讨论】:

        【解决方案4】:

        删除双引号并尝试检查文件的所有者

        chmod($path, 0777) 
        

        【讨论】:

          猜你喜欢
          • 2013-08-12
          • 1970-01-01
          • 2016-06-29
          • 2011-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多