当前位置: 首页>>技术教程>>正文


apache2 – 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”

我错过了什么?

最佳方法

这对我有用

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

重要的是要改变

Order allow, deny

Require all granted 

次佳方法

启用 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 文件放在 /home/yourname/public_html 目录中,然后从 Web 浏览器转到 http://localhost/~yourname

第三种方法

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12828.html,未经允许,请勿转载。