问题描述
我已将 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