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

2022-08-30 20:31:09

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


答案 1

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

  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
    

注意:我假设apache用户名和组名分别是www-data和www-data。您必须相应地更改服务器 apache 用户名/组名称。


答案 2

默认情况下,Ubuntu 上的 Apache 以 www-data 的形式运行。

假设您的文件夹位于 /var/www/mysite 中。

您可以执行以下操作:

chown -R www-data:www-data /var/www/mysite

chmod -R og-r

/var/www/mysite完成此操作后,(Web 服务器)将具有对站点文件的完全访问权限,而其他非 root 用户将根本没有访问权限。www-data

如果希望允许选定用户访问站点,则可以使文件夹组可读,并将这些用户添加到组 www-data 中。

对 Apache 文件设置正确的权限


推荐