这个问题已经被问了几次,在这里,但我还没有找到一个解决办法。 我有Fedora 19 LAMP服务器,我只是想运行简单的命令: file_put_contents('test.txt', 'Hello there');
为了证实我的Web服务器可以使用PHP将数据写入到文件中。 我无法找出一个适当的权限方案。 一开始,只是为了发展,Apache的文档根目录是/var/www/html
。 该目录最初是由用户和组称为拥有www-data
,但我改变了目录的组httpd进程的拥有者,命名的主组apache
。 正是这种老板是活动PHP运行时。 我用下面的证实了这一点:
正如你看到的,过程的所有者是apache
,当前猪病是/var/www/html/php-console
。 该目录由拥有www-data
和该组的成员apache
有充分的机会来了。
我曾尝试以下让PHP实际创建在这个位置的文件,但无济于事:
chmod 777 /var/www/html/php-console
chown apache /var/www/html/php-console
chgrp apache /var/www/html/php-console
cd /var/www/html; > test.txt; chmod 777 test.txt;
而这个脚本是从浏览器中运行任何方法都行不通。 然而,当我使用file_put_contents
与PHP CLI,它的工作原理就像我所期望的,前提是用户,我输入命令为或其组具有写权限,该目录或测试文件。
因此,在命令行,你怎么看www-data
具有读,写和执行权限给我英寸我的文件夹posix_getpwuid
和posix_geteuid
帮你找到的Apache / PHP进程的所有者,在这种情况下是一样的用户登录到控制台。 file_put_contents
成功地写入的8个字节,以指定的文件。 如果我的组或所有者和组更改为别的,我得到许可被拒绝,这绝对是有道理的。
如果这个工程在命令行上,那么为什么不是我真正想要它,即,而实际上网页服务???