简洁版本:
Apache 拒绝访问文件/opt/管理员,但如果提供的文件位于/usr/share/adminer/管理员。
较长的版本:
包裹管理员安装此 apache 配置文件:
#Apache configuration
Alias /adminer /usr/share/adminer/adminer
<Directory /usr/share/adminer/adminer>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
但管理员提供的版本Ubuntu 14.04有点旧了,我决定下载当前版本。
我把管理员.php(更名为索引.php) 文件位于 /opt/adminer,并更改了相关路径在先前的配置文件中相应地进行。
Alias /adminer /opt/adminer
#Alias /adminer /usr/share/adminer/adminer
<Directory /opt/adminer>
#<Directory /usr/share/adminer/adminer>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
但这不起作用。当我使用浏览器访问管理员网络应用程序,我看到了这个:
禁止
您无权访问此服务器上的 /adminer/。
在日志文件中:
[Thu Dec 10 18:08:15.425548 2015] [authz_core:debug] [pid 31647] mod_authz_core.c(802): [client 10.0.2.2:49992] AH01626: Require all denied 的授权结果:deny
[2015 年 12 月 10 日星期四 18:08:15.425671] [authz_core:debug] [pid 31647] mod_authz_core.c(802):[客户端 10.0.2.2:49992] AH01626:授权结果:被拒绝
[2015 年 12 月 10 日星期四 18:08:15.425691] [authz_core:error] [pid 31647] [客户端 10.0.2.2:49992] AH01630:服务器配置拒绝客户端:/opt/adminer/
但如果我复制索引.php文件来自/opt/管理员到/usr/share/adminer/管理员,并相应地更改配置文件,它就可以完美运行。
更多信息:
vagrant@vagrant-ubuntu-trusty-64:~$ ll /opt/adminer/
total 416
drwxr-xr-x 2 root root 4096 Dez 7 23:01 ./
drwxr-xr-x 3 root root 4096 Dez 7 22:10 ../
-rw-r--r-- 1 root root 415388 Nov 15 18:50 index.php
vagrant@vagrant-ubuntu-trusty-64:~$ ll /usr/share/adminer/adminer/
total 416
drwxr-xr-x 2 root root 4096 Dez 10 17:29 ./
drwxr-xr-x 3 root root 4096 Dez 10 17:29 ../
-rw-r--r-- 1 root root 415388 Dez 10 17:29 index.php
答案1
我发现了问题..
在/etc/apache2/apache2.conf:
<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>
因此,默认情况下阿帕奇拒绝访问除/usr/共享和/var/www。
因此我需要编辑 apache2.conf 文件并明确允许访问/选择:
<Directory /opt/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
或者直接添加要求所有已授予在 - 的里面目录我的原始配置文件的一部分:
Alias /adminer /opt/adminer
#Alias /adminer /usr/share/adminer/adminer
<Directory /opt/adminer>
#<Directory /usr/share/adminer/adminer>
Options FollowSymLinks
DirectoryIndex index.php
Require all granted # <----------
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
答案2
在 ubuntu 服务器 16.04.1 LTS 中,您必须添加行(/etc/apache2/apache2.conf):
#put some comment here to know what happend
Include /etc/adminer/apache.conf
我之前已经添加过这一行:
<Directory />
重新启动 apache2 后一切正常。
在添加此行之前,什么都不起作用。