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


Create directory with script user as owner

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

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

我试过在创建后直接使用chown('directory', 'matty'),但得到错误信息"不是所有者在…"。我只需要在当前执行脚本的用户名下创建文件和目录,或者一些硬编码的用户名。

您需要使用FTP客户端或shell将您的上传目录传输到web
从现在开始,PHP将可以在这个目录中写入内容。

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

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

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

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

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

ta -不再有777个文件夹了,但是PHP可以写到一个文件夹。耶!