我遇到了问题。在我的PHP主机中,当我创建文件或目录(通过rename()
或mkdir()
)时,我的文件是使用OWNER 48,GROUP 48而不是FTP OWNER / GROUP(与其他主机一样)创建的。
问题在于,如果我通过PHP执行mkdir()
,我无法管理这个目录(比如放入一些文件,重命名dir或删除),即使在PHP中也是如此!如果我通过FTP创建这个目录,我可以做到。真奇怪。
现在我需要知道:我错了或我的PHP主机被窃听?他们告诉我这是代码问题。
我的代码:
mkdir($image_dir, 0777, true);
它会在FTP上创建类似的东西:
NAME TYPE DATE PERMS OWNER/GROUP
./1967 [DIR] [DATE] fle (0755) 48/48
即使我将mkdir()
上的chmod设置为0777,它也会创建为0755。
那么,我可以做点什么,或者我的主人需要做什么?
谢谢!
答案 0 :(得分:3)
起初这并不奇怪,webserver / php作为与ftp客户端不同的用户运行是好的。
这很丑,但可以帮助你:在任何文件操作之前使用umask(0000);
。当php创建时,它会尝试生成所有文件和目录0777
。
您应该检查webserver / php和ftp客户端是否至少在同一组中,以便您可以使用umask 0007。
顺便说一句。 php是否以安全模式运行?它可以防止文件写入其他用户...无论如何你应该确保禁用它,因为自从5.3以来它被弃用并从5.4开始删除