我已更改 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),用户需要将文件复制到那里,但这比使 / 或 ~ 全世界可读等要安全得多。