在PHP中的chmod 777

3
如果我使用mkdir()在php中创建文件夹,它将具有www-data:www-data用户和755权限。问题是我无法使用ftp用户(zapbe:psasrv)删除此文件夹。我尝试在php中使用chmod($path,"0777")修改文件夹,但这并不起作用。如何使创建的文件夹和上传的文件对www-data和ftp用户都可读/可删除?

你尝试过显式设置模式吗?mkdir("/path/to/my/dir", 0777); - miku
你需要在目录上拥有写入权限才能删除该文件。你的FTP用户是否对包含你要删除目录的目录拥有写入权限? - qbert220
4个回答

5
bool chmod ( string $filename , int $mode )

在PHP中,安全方面可能存在一些限制,因此根据您的配置,它可能无法正常工作。

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

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

此外,PHP中的一句话引用:

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

理解以上内容后,您应该查看chown


4
为了删除一个目录,你需要在父目录上拥有写入权限,而不是要删除的目录上。为了在父目录上提供写入访问权限,一个好的方法是将该父目录归属于一个组,该组包含www-data和你的ftp用户,并且永远不要使用777权限设置。此外,请确保你的父文件夹没有设置粘滞位。

2

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

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

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

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

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

0

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

chmod($path, 0777) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接