如何给apache写入主目录的权限?

时间:2014-02-27 07:51:11

标签: php apache

我的服务器位于/ 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上运行。

5 个答案:

答案 0 :(得分:15)

由于您的文件位于您的主目录中,我建议采用以下方法之一。

  1. 授予0777文件本身的权限。

    chmod 0777 /home/djameson/test.txt
    
  2. 将所有权更改为apache用户www-data并授予所有者写入权限。

    sudo chown www-data:www-data /home/djameson/test.txt
    chmod 0744 /home/djameson/test.txt
    
  3. 将您的用户添加到www-data组或反之亦然将www-data用户添加到您的论坛。然后分组写权限。

    sudo usermod -a -G www-data djameson
    chmod 0764 /home/djameson/test.txt
    
  4. 注意:我假设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 组。

Set correct permissions on your apache files

答案 2 :(得分:0)

为了使用户“djameson”和网络服务器都能读取这个文件,你需要做4件事:

  1. 将用户apache使用(大多数系统上的www-data)添加到系统上的用户组。您可能想要创建一个新的。
  2. 也将用户“djameson”添加到该组。
  3. 更改文件的所有者权限(chown),以便它由用户django和您刚刚设置的群组拥有。
  4. 确保文件权限(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/

此外,请确保您正确定位了特定文件夹; 不是整个主目录