Php 以脚本用户作为所有者创建目录

Php 以脚本用户作为所有者创建目录,php,permissions,mkdir,Php,Permissions,Mkdir,我在一个共享主机上(启用了安全模式),创建PHP可以实际写入的目录时遇到问题。假设我的帐户名为matty,apache帐户名为web 当我使用FTP上传脚本时,它们归matty所有,并且它们也在用户matty下运行。但由于某种原因,如果我使用mkdir或file\u put\u contents来创建一个新的目录或文件,则它归用户web所有。安全模式阻止脚本将文件添加到新目录,因为UID不匹配。web帐户的存在对我来说毫无意义,因为我的所有脚本都是在我自己的用户名下运行的,只有当脚本创建自己的文

我在一个共享主机上(启用了安全模式),创建PHP可以实际写入的目录时遇到问题。假设我的帐户名为
matty
,apache帐户名为
web

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


我尝试在创建后直接使用
chown('directory','matty')
,但收到错误消息“notowner in…”。我只需要使用当前正在执行的脚本的用户名或某些硬编码用户名创建文件和目录。

您需要使用FTP客户端或shell将上载目录下载到
web

从现在起,PHP将能够写入这个目录


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

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

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

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

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


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

在这个主机上似乎不可能。我只有FTP访问权限,用户名/组字段为灰色,因此必须禁用chown。我想我可能需要编写一个使用FTP创建文件的包装器,因为通过FTP手动创建的文件可以很好地工作。我的主机永远不会关闭安全模式,所以我想这是唯一的万不得已的办法?@Matt“我的主机永远不会关闭安全模式”现在移动主机,当有成千上万个好主机的时候,不值得花那么多时间来处理一个垃圾主机。这是一个棘手的情况。我们从一个巨大的快速本地数据中心免费获得这个主机。失去这一切将是一种耻辱,但你是对的——试图在这个主机上运行东西是一种巨大的痛苦。免费的问题是,你得到的是你付出的。