3

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

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

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

4

4 回答 4

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

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

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

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

还有来自 PHP 的引用:

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

了解上面你应该看看chown

于 2011-02-16T16:47:41.330 回答
4

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

于 2011-02-16T16:41:52.813 回答
2

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

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

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

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

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

于 2011-02-16T16:39:49.703 回答
0

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

chmod($path, 0777) 
于 2011-02-16T16:37:17.113 回答