我在为 phpMyAdmin 配置子域(虚拟主机)时遇到问题。
我当前的 .conf 如下所示:
<VirtualHost *:80>
ServerName php.erichermansson.com
ServerAdmin [email protected]
DocumentRoot /usr/share/phpmyadmin
<Directory />
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_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
</IfModule>
</Directory>
# Authorize for setup
<Directory setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>
# Disallow web access to directories that don't need it
<Directory libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory setup/lib>
Order Deny,Allow
Deny from All
</Directory>
</VirtualHost>
你们知道问题出在哪里吗?它仅访问 Apache 测试页。
答案1
所有四个 <Directory> 节都是使用相对路径定义的。目录路径必须始终是完整的绝对路径(或带通配符的绝对路径)。
他们是不是解释为好像它们是相对于 DocumentRoot 的。
尝试:
<Directory /usr/share/phpmyadmin/>
...
</Directory>
<Directory /usr/share/phpmyadmin/setup>
...
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
...
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
...
</Directory>
来自 Apache 2.2 文档:(2.4 相同)
<目录>和</目录>用于包含一组仅适用于指定目录、该目录的子目录以及相应目录中的文件的指令。可以使用目录上下文中允许的任何指令。
Directory-path 可以是目录的完整路径,也可以是使用 Unix shell 样式匹配的通配符字符串。在通配符字符串中,?匹配任何单个字符,* 匹配任何字符序列。您还可以使用 [] 字符范围。
没有通配符与“/”字符匹配,因此<目录*/public_html>不会匹配/home/user/public_html,但是<目录/home/*/public_html>会匹配。