我的simplesaml工作正常,直到我在Ubuntu上将Apache升级到2.4.6
我得到的错误:
Forbidden
You don't have permission to access /simplesaml/ on this server.
答案 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>