我的系统是 Ubuntu 14.04 64 位。
我安装了 apache&SQL&php,我想将默认站点目录从 更改为/var/www/
。/home/smile/Documents/public_sites/
所以我改了三个步骤:
步骤1:sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.conf
将 中的 DocumentRoot 更改mysite.conf
为指向/home/smile/Documents/public_sites/html
。
步骤 2:更改 中的 Directory 指令/etc/apache2/apache2.conf
,将其替换<Directory /var/www/>
为<Directory /home/smile/Documents/public_sites/>
。
步骤 3 sudo a2dissite 000-default && sudo a2ensite mysite
:sudo service apache2 restart
但是,当我检查时http://localhost/
,出现了以下错误:
Forbidden
You don't have permission to access / on this server.
Apache/2.4.7 (Ubuntu) Server at localhost Port 80
这是错误日志:
[Fri Nov 21 11:01:56.740805 2014] [core:error] [pid 18485] (13)Permission denied: [client 127.0.0.1:48186] AH00035: access to / denied (filesystem path '/home/smile/Documents/public_sites/') because search permissions are missing on a component of the path
这是我针对 mysite.conf 更改的部分:
#DocumentRoot /var/www/html
DocumentRoot /home/smile/Documents/public_sites/html
对于 apache2.conf:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /home/smile/Documents/public_sites/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
答案1
您需要在/etc/apache2/apache2.conf
找到如下内容的部分:
<Directory /usr/share/or_whatever >
Allow override none
Require all granted
</Directory>
其中granted
或denied
是此目录的显式权限。如果没有此指令,默认情况下将拒绝和non-standard
之外的所有内容。/var/www/html
/usr/share
您所做的其他一切似乎都是正确的,同时确保在修改这些配置更改后重新加载并重新启动 apache2(有时它们很顽固)
sudo service apache2 reload
sudo service apache2 restart
有点粗鲁,但为了确保万无一失,我只是想养成习惯。
祝你好运!