我有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 ,它会帮助你排除故障。