上传目录的所有者是“www-data”,但是这阻止了通过PHP脚本访问FTP

为了允许对Apache的写入访问,我需要将chown www-data:www-data /var/www/mysite/uploads到我网站的上传文件夹中。 这使我可以通过PHP脚本中的unlink()从文件夹中删除文件。

不幸的是,这阻止了另一个使用FTP函数的PHP脚本的工作。 我认为这是因为FTP用户是mike ,现在上传目录由www-data拥有, mike不能访问它。

我将mike添加到组www-data ,但是这不能解决问题。

有人可以告诉我如何让PHP的FTPfunction除了使用PHP的unlink()函数删除文件吗?

这就是为什么,你需要'写'权限来删除文件。 这里有几个选项。

  1. chwon / var / www / mysite /上传到www-data:mike和chmod到775(rwxrwxr-x)
  2. 创build一个ftp-write组和chown / var / www / mysite / uploads到www-data:ftp-write和chmod到775
  3. 只需chmod到775(rwxrwxr-x),并将mike作为www-data组的一部分
  4. setfacl -m user:mike:rwx在mike的文件夹中设置一个acl
  5. 创build一个ftp-write组,添加mike和组(以及需要使用setfacl -m group:<ftp_group>:rwx所有其他用户的权限setfacl -m group:<ftp_group>:rwx

文件系统权限应该足以解决你的问题。 只在上传目录中尝试像chmod o + rw这样的东西。 chmod命令有效地说“给不在www-data组中的任何人读写权限”。

但是,长期的解决方法是使用一个用于脚本的服务帐户来调用FTP,并将该特定服务帐户与www-data进行绑定。