问题描述
我在桌面上运行ubuntu 13.04 64bit,安装了Apache2,MySQL和PHP等。
我想将自己的Web根目录放在/home/afflicto/public_html
而不是/var/www
中。因此,我遵循了该指南:http://www.maketecheasier.com/install-and-configure-apache-in-ubuntu/2011/03/09(我完成了“配置不同的站点”中的所有操作),因为我更喜欢该解决方案。
这是我所做的:安装Apache2,MySQL等。将/etc/apache2/sites-avaliable/default
复制到/etc/apache2/sites-available/afflicto
。然后对其进行编辑,现在看起来如下所示:
/etc /apache2 /sites-available /afflicto
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/afflicto/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/afflicto/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
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
</VirtualHost>
我做了sudo a2dissite default && sudo a2ensite afflicto && sudo service apache2 restart
访问localhost/test
或localhost/test/index.html
等时,我在/home/afflicto/public_html/test/
中创建了index.php
和index.html
等,但我收到403禁止错误。
我究竟做错了什么?提前致谢。
更新1我已将public_html目录的所有者设置为www-data
。也sudo chmod -R +x public_html && sudo chmod -R 777 public_html
仍然是403错误。
这是apache错误日志的输出:
[Sun Jul 14 06:10:32 2013] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Sun Jul 14 06:10:32 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
最佳方案
我遇到了这个问题。但是我不喜欢将主目录的组更改为www-data的想法。只需修改virtualHost的配置文件即可解决此问题。只需配置目录标签以包括这些标签
<Directory "your directory here">
Order allow,deny
Allow from all
Require all granted
</Directory>
我猜Require all granted
是一个新功能;具有默认值denied
。
有关更多信息,请参见此页面:http://httpd.apache.org/docs/current/mod/core.html#directory
次佳方案
事实证明,我不仅必须chmod /home/afflicto/public_html
,而且还必须chmod /home/afflicto/
目录。
奇怪的。