Apache 无法访问我的主目录中的文件夹

Apache 无法访问我的主目录中的文件夹

我已更改 Apache 的配置以指向我的主目录中的文件夹:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

我甚至已经给出了/home/dbugger/html权限 777。但我仍然不断收到相同的错误消息http://localhost:“403 Forbidden”

我缺少的是什么?

答案1

这对我有用

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

重要的是改变

Order allow, deny

Require all granted 

答案2

启用userdir模块:

sudo a2enmod userdir 

在用户目录中启用 PHP 执行:

sudo nano /etc/apache2/mods-available/php5.conf  

(或者如果使用 php7.0,例如)

sudo nano /etc/apache2/mods-available/php7.0.conf

注释此部分(放在#每行的开头):

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Ctrl+X保存

启用目录列表:

sudo nano /etc/apache2/apache2.conf

添加此内容:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Ctrl+X保存


重新启动 apache(sudo这里也需要):

sudo service apache2 restart

现在将您的 php 文件放入目录中并从您的 Web 浏览器/home/yourname/public_html转到。
http://localhost/~yourname

答案3

Apache 以用户身份运行www-data。如果它在您的主目录中没有执行权限,则 Apache 将无法读取任何文件。

将你的家庭群组更改为www-data

chgrp www-data /home/dbugger

并仅授予它遍历您的主目录的权限:

chmod g+x /home/dbugger

您还可以限制以下权限/home/dbugger/html

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html

答案4

根据他们的页面: https://httpd.apache.org/docs/2.4/howto/public_html.html

您可以将 userdir 设置为更好的值:/var/www 并在其中通过“用户名”创建一个目录,您可以使该目录由简单用户拥有,但全世界可读(即 755),用户需要将文件复制到那里,但这比使 / 或 ~ 全世界可读等要安全得多。

相关内容