我的服务器位于/ var / www / html我在/var/www/html/fileio_test/io_test.php中有一个php脚本
<?php
$logging = <<< LOG
This is a test
LOG;
$testfile = fopen('/home/djameson/test.txt', 'a');
fwrite ($testfile, $logging);
fclose($testfile);
?>
当我尝试运行此脚本时,我得到了
Warning: fopen(/home/djameson/test.txt): failed to open stream: Permission denied in /var/www/html/fileio_test/io_test.php on line 7
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 8
Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 9
如何让apache写入我的主目录?服务器在fedora 20上运行。
答案 0 :(得分:15)
由于您的文件位于您的主目录中,我建议采用以下方法之一。
授予0777文件本身的权限。
chmod 0777 /home/djameson/test.txt
将所有权更改为apache用户www-data并授予所有者写入权限。
sudo chown www-data:www-data /home/djameson/test.txt
chmod 0744 /home/djameson/test.txt
将您的用户添加到www-data组或反之亦然将www-data用户添加到您的论坛。然后分组写权限。
sudo usermod -a -G www-data djameson
chmod 0764 /home/djameson/test.txt
注意:我假设apache用户名&amp;组名是www-data&amp; www-数据分别。您必须相应地更改服务器apache用户名/组名。
答案 1 :(得分:13)
默认情况下,Ubuntu上的Apache运行为 www-data 。
假设您的文件夹位于 / var / www / mysite 。
你可以这样做:
chown -R www-data:www-data /var/www/mysite
chmod -R og-r
/var/www/mysite
完成此操作后,www-data
(Web服务器)将拥有 完全访问该站点的文件,而其他非root用户将拥有 根本没有访问权。如果您希望允许选定用户访问该网站,您可以进行访问 文件夹组可读,并将这些用户添加到 www-data 组。
答案 2 :(得分:0)
为了使用户“djameson”和网络服务器都能读取这个文件,你需要做4件事:
chown
),以便它由用户django和您刚刚设置的群组拥有。chmod
)允许该组具有读取权限。答案 3 :(得分:0)
如果您的某些文件不在www目录中,并且您想提供对apache环境之外文件的访问权限,则可以使用 chmod -R o + rx
上面将授予“其他用户(也包括apache用户)”读取/执行文件的权限
答案 4 :(得分:0)
我在这方面的经历从来都不是很好。不管怎样,这个问题一般有两个方面:给apache(或那个用户)所有权权限,同时告诉selinux你知道这个写请求。试试这个,它应该可以工作:
chown -R apache /full-path-to-target-folder/
chcon -R -t httpd_sys_rw_content_t /full-path-to-target-folder/
此外,请确保您正确定位了特定文件夹; 不是整个主目录