为了允许 Apache 具有写入权限,我需要访问我网站的上传文件夹。这样我就可以通过PHP 脚本chown www-data:www-data /var/www/mysite/uploads
从文件夹中删除文件。unlink()
不幸的是,这导致另一个使用 FTP 函数的 PHP 脚本无法运行。我认为这是因为 FTP 用户是 ,mike
而现在 uploads 目录归www-data
,因此mike
无法访问它。
我已添加mike
到该组www-data
,但这并不能解决问题。
除了使用 PHP 函数删除文件之外,有人可以告诉我如何让 PHP FTP 函数正常工作吗unlink()
?
答案1
这就是为什么您需要“写入”权限才能删除文件。这里您有几个选择。
- 将 /var/www/mysite/uploads 更改为 www-data:mike 并将 chmod 更改为 775 (rwxrwxr-x)
- 创建一个 ftp-write 组并将 /var/www/mysite/uploads chown 为 www-data:ftp-write 并将 chmod 设置为 775
- 只需将 chmod 设置为 775 (rwxrwxr-x),并将 mike 保留为 www-data 组的一部分
- 使用以下命令为 Mike 设置文件夹的 ACL:
setfacl -m user:mike:rwx
- 创建一个 ftp-write 组,添加 mike 和该组(以及任何其他需要这些权限的用户)
setfacl -m group:<ftp_group>:rwx
答案2
文件系统权限应该足以解决您的问题。请仅在上传目录上尝试类似 chmod o+rw 的操作。chmod 命令实际上表示“授予不属于 www-data 组的任何人读写权限。”
但是,长期的解决方案是使用调用 FTP 的脚本的服务帐户,并将该特定服务帐户与 www-data 捆绑在一起。