50

我在我的桌面上运行 ubuntu 13.04 64bit,我安装了 Apache2、MySQL 和 PHP 等。

我想让我的网络根目录/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

我在 访问等时创建了一个index.php和,我得到 403 禁止错误。 index.html/home/afflicto/public_html/test/
localhost/testlocalhost/test/index.html

我究竟做错了什么?提前致谢。

更新 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
4

5 回答 5

115

I was faced with this issue. But I didn't like the idea of changing the group of my home directory to www-data. This problem can simply be solved by modifying the configuration file for the virtualHost. Simply configure the Directory tag to include these

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

The Require all granted is a new feature I guess; having a default value of denied.

see this page for further info: http://httpd.apache.org/docs/current/mod/core.html#directory

于 2013-10-14T09:55:05.797 回答
24

原来我不仅要chmod /home/afflicto/public_html,还要/home/afflicto/目录。

诡异的。

于 2013-07-14T04:25:28.133 回答
0

这是另一个旨在添加更简单解释的答案。假设您要提供一个名为“main”的文件,该文件位于/var/www/testwebsite目录中(已配置和启用的虚拟主机的 DocumentRoot)。现在假设我们希望 Apache Web 服务器只能访问“主”文件而不是其他文件(例如 main 可能是我们 Web 应用程序的入口点),那么这意味着 Apache Web 服务器必须是那个文件。所以chown www-data:www-data /var/www/testwebsite/main必须这样做。(注意:www-data是用户名和 apache 在与其他文件交互时使用的组名(实际上,在 Ubuntu 以外的发行版上,这可能是不同的名称,在这种情况下,可以简单地在这apache2.conf以及))。此外,如果“主”文件没有读取/执行的权限,则必须将其授予 apache 的用户和组:chmod 770 /var/www/testwebsite/main. 这给了作为文件“main”所有者的用户(www-data)和组(www-data)这些权限:读/写/执行(4 + 2 + 1 = 7),并且不给其他用户任何权限. 现在单个文件(主文件)可以由 Apache 运行,而我们可以对/var/www/testwebsite目录中的所有其他文件有任何其他严格级别的限制。

于 2020-06-20T00:52:16.750 回答
0

我为这个确切的问题苦苦挣扎了几个小时,最终为我解决的问题是在apache2.conf.

<Directory /dir>-><Directory /dir/>

于 2021-12-15T12:39:25.977 回答
0

这些选项对我有用:

 Options Indexes FollowSymLinks
 AllowOverride All   
 Require all granted
于 2020-01-03T11:21:06.407 回答