在 htdocs 中复制项目后出现 403 禁止错误

在 htdocs 中复制项目后出现 403 禁止错误

我成功在 ubuntu 14.04 中安装了 xampp-linux-x64-1.8.3-4。XAMPP 安装在 中/opt/lampp。我在 中复制 HTML 项目后收到 403 Forbidden Error 消息文档文件夹。

我做了什么和尝试了什么:

  1. 我复制了该项目gksudo nautilus /opt/lampp/htdocs
  2. 我尝试将 /opt/lampp/htdocs/ 的所有权更改为我。
  3. 我改变了文件夹的权限。

答案1

关于错误

403 Forbidden 错误意味着 Web 服务器(httpd 守护进程)无法访问需要提供的公共文档(网页)。

您的操作可能造成的结果:

  1. 1 中的所有操作均由 root 用户执行,导致所有文件均归 root 所有,因此 httpd 守护进程无法访问它们。

  2. 您现在拥有所有权,/opt/lampp/htdocs/并且其结果与上述第 1 项相同。

  3. 您没有提到现在如何设置权限,因此不清楚现在可以访问什么。

可能的解决方案:

在我的服务器中,我托管所有公共文档,/srv/www/但解决方案是相同的。

将所有权赋予 httpd 守护进程(Apache、Nginx 等),即:

sudo chown -R www-data:www-data /opt/lampp/htdocs/

假设 httpd 守护进程名为www-数据并属于www-数据组,否则您将必须相应地进行调整。

一般来说,在设置 Web 服务器时,您希望服务器用户成为所提供服务的所有者。笔记这是不是对于 Python 等语言的情况,基于 Django 的项目不能位于公共目录中。

答案2

如果您已设置权限并创建虚拟主机文件但仍然出现错误,请查看 apache 配置。

apache2 配置文件现在有一个默认安全模型,可能会阻止您的目录被服务。我将我的目录托管在我的主目录中,我总是必须将此部分配置添加到 apache2.conf 中。

sudo vim /etc/apache2/apache2.conf

在第 146 行左右你会看到以下部分。

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<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 /srv/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

将自定义 Web 目录添加到此部分。根据需要调整其他参数。

<Directory /home/my_custom_directory/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

注意:我使用 drupal,它需要 AllowOveride All 才能使 .htaccess 文件正常工作。您可能在最终配置中不需要它。

相关内容