在PHP中取消链接和权限被拒绝

时间:2011-04-17 07:45:55

标签: php apache permissions ftp

我正在尝试删除文件。我知道问题是什么,我只是不知道如何正确设置权限。

我目前的设置是Ubuntu 10.10 Netbeans,并通过FTP上传到我的开发服务器。

这些是我为获取Apache2和VSTPD而采取的步骤

  1. 为umask 0027设置vsftpd(/etc/vsftpd.conf)[local_umask = 0027]
  2. 创建www-users组(groupadd www-users)
  3. linux_server_user添加到群组(usermod -a -G群组linux_server_user
  4. 将apache设置为以www-users组(httpd.conf)
  5. 运行
  6. chgrp www-users / var / www
  7. chmod 2775 / var / www
  8. 我猜我需要授予apache权限才能覆盖我从FTP上传的文件。我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

让我们看看您的访问模式:

2775
 ^^^
 ||'- read/exec by everyone in different groups
 |'-- read/write/exec by group only
 '--- read/write/exec by user only

最后一个标志应该至少为6(其他组读/写)。

也就是说,有绝对不可能的极端情况(chmod,unlink等都失败了)。

这就是主要新系统(例如wordpress和joomla)提供通过FTP进行文件修改(编程)的确切原因。

这是通过提供DSN来取消链接:

来完成的
unlink('ftp://user:pass@host/absolute/path/to/file');

在某些情况下,可以禁用allow_url_fopen,在这种情况下,您必须stream_wrapper_register()自己的FTP类。

我发现PHP的FTP功能很成问题,而且当我使用CURL时它看起来效果最好。

答案 1 :(得分:0)

您可能需要检查您的ftp用户并查看他是否有权删除文件,某些用户只能获得只读权限。如果你是通过PHP尝试unlink(),那么你可能需要将文件CHMOD到777才能完成。