如何让php创建与创建它们的文件具有相同所有权的文件?

时间:2010-09-03 12:06:55

标签: php apache permissions

PHP使用apache创建文件:apache所有权,这似乎导致访问该文件的其他php脚本出现问题。

如何让php创建与创建它们的文件具有相同所有权的文件?

我在其他地方读到打开safe_mode可能会影响这一点,但我已将其关闭并重新上传文件,我仍然遇到同样的问题。

我确信对于更熟悉apache的人来说,这将是一个简单的问题,但我找不到通过搜索找到解决方案。

由于

5 个答案:

答案 0 :(得分:2)

如果所有权很重要且多个用户/项目在同一台服务器上,您可能需要查看Apache中的SuExec:PHP文件将由设置中指示的用户运行,因此文件的默认所有权会自动处理的。它节省了大量的chown / chmod,并且用户运行的进程更容易受到限制。

否则,我通常会创建一个包含所有者和组的组。 apache,并将默认的umask设置为007。

答案 1 :(得分:0)

如果您使用的是Windows操作系统,则可以启动Apache作为服务,并允许apache在启动时使用您自己帐户的权限。

答案 2 :(得分:0)

尝试使用fileowner(http://www.php.net/manual/en/function.fileowner.php)获取当前脚本所有者的ID,posix-getpwuid获取该ID(http://www.php.net/manual/en/function.posix-getpwuid.php)和chown(http://php.net/manual/en/function.chown.php的用户名)为文件设置用户。

答案 3 :(得分:0)

为什么要通过所有程序化的麻烦来改变主人?无论如何,apache.apache是一个非常不安全的主人。为什么不只是chmod 0777为所有所有者提供读,写和执行的文件。这将消除这个问题。

如果您仍然遇到麻烦,那么您可能需要检查open_basedir是否已启用。如果是这种情况,则不是文件所有权或权限,而是位置。这基本上意味着您需要将文件放在apache / php已经包含在其路径中的位置。

答案 4 :(得分:0)

A.M。上面提到chown(),请注意一般chown()只能由root使用,而你的webserver运行帐户不太可能是root用户,这是一个非常糟糕的主意。

可以设置sudo以允许特定区域中的其他用户chown,并且仅允许特定用户chown。只需在/ etc / sudoers中创建一个合适的条目,通常使用visudo程序。如果您自己没有root访问权限,那么您的托管服务提供商必须为您执行此操作,如果他们愿意的话。

有关详细信息:http://www.sudo.ws/sudo/sudo.html