1

我有问题。在我的 PHP 主机中,当我创建文件或目录(通过rename()mkdir())时,我的文件是使用 OWNER 48、GROUP 48 而不是 FTP OWNER/GROUP(与其他主机一样)创建的。

问题是,如果我做一个mkdir()例如,通过 PHP,我不能管理这个目录(比如放入一些文件,重命名目录或删除),即使在 PHP 中!如果我通过 FTP 创建这个目录,我可以做所有事情。真的很奇怪。

现在我需要知道:我错了还是我的 PHP 主机被窃听了?他们告诉我这是一个代码问题。

我的代码:

mkdir($image_dir, 0777, true);

它会在 FTP 上创建类似的东西:

NAME   TYPE  DATE   PERMS      OWNER/GROUP
./1967 [DIR] [DATE] fle (0755) 48/48

即使我将 chmod 设置mkdir()为 0777,它也会像 0755 一样创建。

所以,我可以做点什么,还是我的主人需要做的?

谢谢!

4

1 回答 1

3

起初这并不奇怪,webserver/php 作为与您的 ftp 客户端不同的用户运行是件好事。

umask(0000);好吧,这很丑陋,但可能对您有所帮助:在任何文件操作之前在 php 中使用。0777当由 php 创建时,它将尝试创建所有文件和目录。

您应该检查 webserver/php 和 ftp 客户端是否至少在同一组中,以便您可以使用 umask 0007。

顺便提一句。php在安全模式下运行吗?它可能会阻止使文件对其他用户可写...无论如何,您应该确保禁用它,因为它自 php 5.3 以来已被弃用,自 5.4 以来已被删除

于 2012-10-22T22:23:12.820 回答