Apache升级后为simplesaml获取403禁止错误

时间:2014-04-28 09:32:33

标签: simplesamlphp

我的simplesaml工作正常,直到我在Ubuntu上将Apache升级到2.4.6

我得到的错误:

Forbidden

You don't have permission to access /simplesaml/ on this server.

3 个答案:

答案 0 :(得分:5)

在Apache上安装simplesamlphp的说明只需要simplesamlphp目录的别名:

https://simplesamlphp.org/docs/stable/simplesamlphp-install#section_6

但是对于Apache 2.4.6+,安全性已经发生了变化 - 当我添加Directory指令时,它对我有用。例如:

<VirtualHost *:80>
    ServerName mywebsite.dev
    DocumentRoot /home/myuser/www/mywebsite/

    <Directory /home/myuser/www/mywebsite/>
        Require all granted
    </Directory>

    Alias /simplesaml /var/simplesamlphp/www

    <Directory /var/simplesamlphp/www/>
        Require all granted
    </Directory>

</VirtualHost>

答案 1 :(得分:0)

虽然所选答案是正确的,但我想补充说SELinux也会导致此错误。我花了几个小时才意识到这是我在网上大量例子之后的问题。

如果您正在运行SELinux,请确保运行以下命令:

chcon -R --reference=/var/www /var/simplesamlphp

这会将/var/simplesamlphp目录放在与/var/www相同的安全上下文中。您不能只将/var/simplesamlphp/www目录放在同一个上下文中,因为_include.php访问/var/simplesamlphp/lib中的文件。

我希望这可以防止有人像我一样在这个问题上花费太多时间。

答案 2 :(得分:0)

如果通过compose安装了simplesamlphp,这可能会更加复杂。除了@RusselEngland's answer需要添加正确的Apache配置之外,如果您仍然获得403,还需要确保.htaccess中的规则不会阻止此文件。

Apache配置:

<VirtualHost *:80>
    DocumentRoot /var/www/html

    Alias /simplesaml /var/www/html/vendor/simplesamlphp/simplesamlphp/www

    <Directory /var/www/html/vendor/simplesamlphp/simplesamlphp/www/>
        Require all granted
    </Directory>
</VirtualHost>

.htaccess(在/ var / www / html中);

<IfModule mod_rewrite.c>
    #...
    RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
    RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?.php
    RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics.php$
    RewriteCond %{REQUEST_URI} !^/simplesaml/*  # Add this condition
    RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]
</IfModule>