在deepin20系统中安装apache2之后改变目录,访问出现403错误?

如标题所述,我出现了如下错误:
Forbidden
You don't have permission to access this resource.

Apache/2.4.38 (Uos) Server at localhost Port 80
我能够想到的是目录没有权限,因此对目录已经设置了权限
image.png

配置文件如下:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /home/leomus/www

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn
        
    <Directory "/home/leomus/www"> 
        Options FollowSymLinks 
        AllowOverride None 
        Order deny,allow
        Allow from all 
    </Directory> 
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

        # or most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

期间我修改目录成var/www/html
成初始状态,但是无法运行php
**无法运行PHP的问题已经解决是缺少插件,安装相关组件即可运行PHP
安装组件命令如下**

 sudo apt install php7.3-mysql php7.3-curl php7.3-gd php7.3-intl php-pear php7.3-imagick 

但是仍然不能修改目录,这个目录是正常且路径是存在的。
我系统里面安装了PHP7.3
image.png
我实在找不出问题所在了,有知道兄弟麻烦解答一下,谢谢!

补充问题:我发现只要网站目录换成apache2默认的目录暨:/var/www/html

网站就能正常,如果换成其他任何目录就不行!

这是什么原理,搞不明白!

阅读 1.7k
avatarAI BotBETA
在 Deepin 20 系统中安装 Apache2 后遇到 403 错误通常是由于权限设置或配置问题。以下是一些可能的解决方案:

1. **确保目录权限正确**:
   - 确认 `/home/leomus/www` 目录及其内容的权限和所有权设置正确。通常,Apache 需要对该目录有读取权限。你可以使用以下命令设置适当的权限:
 sudo chown -R $USER:$USER /home/leomus/www
 sudo chmod -R 755 /home/leomus/www
 ```
 注意:如果 Apache 运行在非 root 用户下(如 `www-data`),你可能需要将所有者设置为该用户:
 ```bash
 sudo chown -R www-data:www-data /home/leomus/www
 ```
  1. 更新 Apache 配置文件中的目录路径

    • 如果你已经将 DocumentRoot 更改到 /var/www/html,请确保 Apache 配置文件中也反映了这一更改,并且 /var/www/html 目录的权限设置正确。
    • 更新配置文件中的 <Directory> 指令以匹配新的 DocumentRoot:

      <Directory "/var/www/html">
          Options Indexes FollowSymLinks
          AllowOverride None
          Require all granted
      </Directory>
    • 注意:在 Apache 2.4 及以上版本中,推荐使用 Require all granted 替代 Order deny,allowAllow from all
  2. 确保 Apache 有权访问 PHP 文件

    • 如果你在 /var/www/html 目录中运行 PHP,请确保 PHP 文件的权限也允许 Apache 读取。
    • 同样,确保 Apache 加载了 PHP 模块。你可以通过查看 Apache 的配置文件(通常是 /etc/apache2/mods-enabled/ 目录下的文件)来确认 PHP 模块是否已启用。
  3. 重启 Apache 服务

    • 每次更改配置文件后,都需要重启 Apache 服务以使更改生效:

      sudo systemctl restart apache2
  4. 检查错误日志

    • 查看 Apache 的错误日志(通常位于 /var/log/apache2/error.log)以获取更多关于 403 错误的详细信息。
  5. SELinux 或 AppArmor

    • 如果你的系统启用了 SELinux 或 AppArmor,这些安全模块可能会阻止 Apache 访问某些目录。检查相关的安全策略日志,并根据需要进行调整。

通过以上步骤,你应该能够解决遇到的 403 错误问题。如果问题仍然存在,请仔细检查每一步的配置和权限设置。

2 个回答

更改目录权限

确保目录及其所有子目录和文件具有正确的权限,通常使用 755 权限。具体操作步骤:

chmod -R 755 /path/to/your/new/directory

更改目录所有者

确保 Apache 用户(通常是 www-dataapache)拥有该目录及其内容的所有权:

# 如果Apache用户是www-data
chown -R www-data:www-data /path/to/your/new/directory

确认Apache的运行用户和组与新目录的所有者和组一致。可以在/etc/apache2/envvars文件中设置Apache的运行用户和组:

export APACHE_RUN_USER=youruser
export APACHE_RUN_GROUP=yourgroup

如果Apache用户是apache

chown -R apache:apache /path/to/your/new/directory


### 验证权限和所有权
使用以下命令检查目录的权限和所有权:

ls -l /path/to/your/new/directory


你应该看到类似于以下的输出:

drwxr-xr-x 2 www-data www-data 4096 Nov 9 21:58 your-directory


### 更新Apache配置文件
确保在 Apache 配置文件中正确配置了新目录。例如,在 `/etc/apache2/apache2.conf` 中添加或修改以下内容:

<Directory "/path/to/your/new/directory">

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

</Directory>


### 重启Apache服务
每次修改配置文件后,记得重启 Apache 服务以应用更改:

sudo systemctl restart apache2

通过几天,终于发现是版本设置不同产生的问题:
我之前的设置是:

 <Directory "/home/leomus/www"> 
        Options FollowSymLinks 
        AllowOverride None 
        Order deny,allow
        Allow from all 
    </Directory> 

修改为:

<Directory "home/leomus/www">
        Options -Indexes +FollowSymlinks
        AllowOverride All
        Order deny,allow
        Require all granted
    </Directory>

就是这个版本设置不同导致各种问题!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏