我在共享主机上(启用安全模式),我在创建PHP实际可写入的目录时遇到问题。假设我的帐户名为matty
,而apache帐户名为web
。
当我使用FTP上传脚本时,它们归matty
所有,并且它们也在用户matty
下运行。但出于某种原因,如果我使用mkdir
或file_put_contents
来创建新目录或文件,则它由用户web
拥有。安全模式会阻止我的脚本将文件添加到新目录,因为UID不匹配。 web
帐户的完整存在对我来说毫无意义,因为我的所有脚本都在我自己的用户名下运行,并且只有当脚本创建自己的文件/目录时才会出现。
我在创建后尝试直接使用chown('directory', 'matty')
,但收到错误消息“Not owner in ...”。我只需要在当前正在执行的脚本的用户名或一些硬编码的用户名下创建文件和目录。
答案 0 :(得分:2)
您需要使用FTP客户端或shell将上传目录chown到web
从现在开始,PHP将能够写入此目录。
这是唯一的方法(除了关闭安全模式)因为这个PHP指令的目的是阻止其他用户文件上的任何活动。
答案 1 :(得分:0)
我在共享主机上遇到了同样的问题,没有ssh访问&通过FTP控制有限。应用程序(作为apache运行)无法在通过FTP上传的文件夹中创建文件(因此拥有不同的所有者),而文件夹的权限为777 - 这是我不想要的。 我通过以下舞步来解决这个问题:
1)通过FTP,创建一个文件夹&将其权限(暂时)设置为777
2)使用PHP脚本,在第一个文件夹中创建第二个文件夹,权限设置为755. PHP写入第二个文件夹应该没有任何困难。
3)返回并将第一个文件夹的权限设置为755(通过FTP)
ta da - 没有777文件夹,但PHP可以写入文件夹ok。耶!