1

我在一个共享主机上(安全模式打开),我在创建 PHP 可以实际写入的目录时遇到了麻烦。假设我的帐户被调用matty,apache 帐户被调用web

当我使用 FTP 上传脚本时,它们归 FTP 所有matty,并且它们也在用户下运行matty。但由于某种原因,如果我使用mkdirfile_put_contents创建一个新目录或文件,它归 user 拥有web。安全模式会阻止我的脚本将文件添加到新目录,因为 UID 不匹配。该web帐户的整个存在对我来说毫无意义,因为我的所有脚本都在我自己的用户名下运行,并且只有在脚本创建自己的文件/目录时才会出现。

我尝试chown('directory', 'matty')在创建后立即使用,但收到错误消息“不是...的所有者”。我只需要在当前执行脚本的用户名下创建文件和目录,或者一些硬编码的用户名。

4

2 回答 2

2

您需要将上传目录更改为web使用 FTP 客户端或 shell。
并且从现在开始 PHP 就可以写入这个目录了。

这是唯一的方法(避免关闭安全模式),因为这个 PHP 指令的目的是防止其他用户文件上的任何活动。

于 2013-05-20T21:40:35.990 回答
0

我在没有 ssh 访问和通过 FTP 进行有限控制的共享主机上遇到了同样的问题。应用程序(作为 apache 运行)无法在通过 FTP 上传的文件夹中创建文件(因此有不同的所有者),而该文件夹的权限为 777 - 我不想要。我用以下舞步绕过它:

1)通过FTP,创建一个文件夹并将其权限(临时)设置为777

2) 使用 PHP 脚本,在第一个文件夹中创建第二个文件夹,权限设置为 755。PHP 写入第二个文件夹应该没有困难。

3)返回并将第一个文件夹的权限设置为755(通过FTP)

ta da - 不再有 777 个文件夹,但 PHP 可以写入文件夹。耶!

于 2014-11-28T16:42:18.537 回答