如果我使用 mkdir() 在 php 中创建一个文件夹,它具有 www-data : www-data 用户和 755 权限。
问题是我无法使用 ftp-user (zapbe:psasrv) 删除此文件夹 我尝试在 php 中使用 chmod($path, "0777") 修改该文件夹,但这不起作用。
如何使创建的文件夹和上传的文件对 www-data 和 ftp 用户都可读/可删除?
如果我使用 mkdir() 在 php 中创建一个文件夹,它具有 www-data : www-data 用户和 755 权限。
问题是我无法使用 ftp-user (zapbe:psasrv) 删除此文件夹 我尝试在 php 中使用 chmod($path, "0777") 修改该文件夹,但这不起作用。
如何使创建的文件夹和上传的文件对 www-data 和 ftp 用户都可读/可删除?
bool chmod ( string $filename , int $mode )
在 PHP 中,它们可能对安全性有一些限制,因此取决于您的配置,它可能无法正常工作。
上面的函数返回一个布尔值,让您知道它是否已成功更改实体权限。
if(!chmod($directory,0777))
{
echo "Unable to chmod $direcotry";
}
还有来自 PHP 的引用:
当前用户是运行 PHP 的用户。它可能与您用于正常 shell 或 FTP 访问的用户不同。在大多数系统上,只有拥有该文件的用户才能更改模式。
了解上面你应该看看chown
为了删除目录,您需要对父目录而不是要删除的目录具有写入权限。为了提供对父级的写入访问权限,一个好的方法是使该父级由 www-data 和您的 ftp 用户都属于的某个组拥有,并且永远不要使用 777 权限。此外,请确保您的父文件夹没有设置粘性位。
默认情况下,当您在 *nix 中创建文件夹时,其他用户将无法删除/修改该文件夹。
要更改 www-data 创建文件夹的权限,请在浏览器的 php 脚本中运行命令,它应该会成功更新
注意 不要将新权限放在双引号中,它需要是一个八进制数
chmod($path, 0777);
// not chmod($path, "0777);
一旦你这样做,任何人都可以修改文件夹
删除双引号并尝试检查文件的所有者
chmod($path, 0777)