php创建的文件无法通过FTP删除

时间:2013-03-22 14:02:27

标签: php file ftp file-permissions delete-file

我在网上搜索了可能的解决方案,但它似乎让我越来越陷入困境。

一旦PHP创建了一个无法删除文件的文件,就可以删除同一目录中的其他文件。 如果PHP创建了一个目录,FTP无法使用整个目录,我可以看到该目录中的文件,但无法删除,修改或上传到该目录。

我确实在这里看到了很多这些问题,但主要是涉及权限问题,在这种情况下,所有权限,umask和属性都与可以通过FTP删除的文件相同。

我还认为可能是文件正在使用中,但事实并非如此,(lsof结果为空,查杀apache和nginx,通常会释放文件也无效)。

服务器正在运行PLESK 11.0.9 FTP服务器是ProFTPD。

这是由PHP,PLESK或ProFTPD本身引起的一些限制吗?

我希望你可以帮助我,因为我很沮丧。 如果您有任何可能有助于回答此问题的问题,请随时询问:)。

[编辑] 更多细节我认为这不是一个权限问题。

[root@srv domains]# lsattr
-------------e- ./test
-------------e- ./test2

[root@srv domains]# ls -als 
total 32 
4 drwxrwxrwx.  7 user0041 psacln  4096 Mar 22 06:41 . 
4 drwxr-x---. 12 user0041 psaserv 4096 Mar 22 07:28 .. 
4 drwxrwxrwx.  2 user0041 psacln  4096 Mar 22 06:30 test
4 drwxrwxrwx.  2 user0041 psacln  4096 Mar 22 06:34 test2

[root@srv domains]# lsof test
[root@srv domains]#

我无法通过ftp对目录测试做任何事情,但我可以对目录test2做任何事情

test已经使用php的mkdir命令创建,而test2已经通过ssh创建,并且已经被正确的用户所拥有。

我还从输出中删除了一些不相关的条目

有关用户proftpd的更多信息在登录时运行:

[root@srv domains]# ps aux | grep ftp
10000     8508  0.5  0.0 152192  3684 ?        SNs  08:37   0:00 proftpd: user0041 - x: IDLE
[root@srv domains]# cat /etc/passwd | grep 10000
user0041:x:10000:505::/var/www/vhosts/domain.ltd:/bin/false

对于隐私问题,我已将域名更改为domain.ltd。

2 个答案:

答案 0 :(得分:1)

看起来您的FTP用户没有权限删除运行PHP的用户创建的任何内容。您需要就此与您的托管公司联系。

答案 1 :(得分:0)

很可能是用户权限问题。但如果您发布了一些用例,其中包含更多详细信息,说明您究竟在做什么(文件名,流程......),这可能有所帮助