2010-09-03 56 views
6

PHP使用apache:apache所有权创建文件,这似乎是导致其他php脚本访问文件的问题。我该如何让PHP创建与创建它们的文件具有相同所有权的文件?

我该如何允许php创建与创建文件相同所有权的文件?

我已经在其他地方看到,打开safe_mode会影响这个,但是我已经关闭了它并重新上传这些文件,而且我仍然遇到同样的问题。

我敢肯定,这将是一个更熟悉apache的人的简单问题,但我未能通过搜索找到解决方案。

感谢

+0

? Windows还是Linux? – 2010-09-03 12:08:46

+0

我假设他在谈论Linux。 – fabrik 2010-09-03 12:11:22

回答

2

如果所有权问题和多用户/项目都在同一台服务器上,你可能要考虑的SuExec在Apache中:PHP文件,然后将通过在设置中指定的用户运行,所以文件的默认所有权自动处理。它节省了大量的chown/chmod,并且用户运行的进程更容易受到限制。

否则,我通常创建一个组,同时与业主& Apache和设置您正在使用哪种环境中的默认umask为007

0

如果您使用的是Windows操作系统,你可以启动Apache作为一种服务,让Apache来启动时使用自己的帐户的权限。

+0

我没有在本地运行它,我在一个rackspace服务器上运行,所以linux – DonutReply 2010-09-03 12:20:57

+0

在那种情况下,我不知道如何 – Thariama 2010-09-03 12:57:01

0

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

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

+2

呃,抱怨一个不安全的'apache',然后提倡0777是一个相当古怪的组合。 – Wrikken 2010-09-03 14:57:41

+0

我在说的是,如果Apache需要访问这些文件,将它们设置为0777不会产生太大的区别。就这样。 – 2010-09-04 14:46:28

0

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

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

欲了解更多信息:http://www.sudo.ws/sudo/sudo.html

相关问题