修正:Apache – PHP的权限来创build/编辑文件和目录?

我有rackspace云服务器… Fedora 13,我安装了Apache,MySQL。

现在,我有一段代码(PHP),我的Web应用程序使用了很多。 它运行在运行XAMPP的本地机器上,但是当我在机架空间服务器上上传这段代码时,它不起作用:

$myFile = "textfile.txt"; $fh = fopen($myFile, 'w') or die("cant open"); $stringData = "CONTENT"; fwrite($fh, $stringData); fclose($fh); 

真正简单的PHP代码,应该只是工作。 但是,它不会创build文件,如果我自己上传textfile.txt文件,并将自己授予0666,那么它将编辑该文件。 然而,这并不理想,因为它仍然不会创build新的文件(或目录),并且手动地修改每个文件是不可行的。

文件的所有者是root,组是根

我该如何做这项工作?

更新 – 修正

我改变了所有者到apache:apache做:chown -R apache:apache / var / www / html

这似乎工作:)

是否有任何安全问题,或者是有罚款有用户apache和组阿帕奇?

谢谢!

给Apache的用户写入你的整个DocRoot是不理想的。 我通常configuration的东西有点不同。

首先我确定一个文件将被写入的地方 – 这可以在DocRoot中,也可以在一个单独的位置,在apache中带有一个Aliasconfiguration。

我创build一个组(通常称为www-pub),并添加apache用户。

那我呢

 chown root:www-pub <directory> 

 chmod g+rwxs <directory> 

其中设置了setgid位,这意味着在顶部创build的任何文件或目录将具有与父目录相同的组,以及该组可写(和可读)。

这样,你就可以限制apache用户在哪里和哪些地方,但是仍然只允许在那个地方创build文件等等。

把一个info.php。

echo -e "<?php \nphpinfo(); \n?>" > info.php具有适当的所有权。 然后在这里更新,以便我可以检查display_errors是否打开。

或简单地ON display_errors ,它会帮助你排除故障。