$_SERVER['DOCUMENT_ROOT'] 没有 return 预期的目录位置
$_SERVER['DOCUMENT_ROOT'] does not return the expected directory location
我访问了我网站的子文件夹并收到此错误:
PHP Warning: include_once(): Failed opening '/var/www/html//include/version.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /srv/sparrow/php/include/branches.inc on line 3
似乎 $_SERVER['DOCUMENT_ROOT'] return 错误的目录如下:
/var/www/html/
如果我访问 www.my.website/php,这应该是 $_SERVER['DOCUMENT_ROOT' 的预期目录]] 应该 return:
/var/www/html/php/
这些是我的虚拟主机配置:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.mywebsite.com
DocumentRoot /var/www/html/
<Directory /var/www/html/>
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.mywebsite.com/ph
# Webroot of PHP site
DocumentRoot /var/www/html/php/
<Directory /var/www/html/php/>
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
如何配置我的虚拟主机配置,以便如果我访问 www.my.website/php 它应该 return DocumentRoot 值为 /var/www/html/php/ ?
谢谢大家!
您在端口 80 上有两个虚拟主机。先赢。您应该通过 IP、服务器名或端口来区分它们。如果两个 运行 在同一个端口上,如果您使用的是 Apache 2.2(2.4 不需要),您还需要 NameVirtualHost 80
。
我很确定,如果你交换虚拟主机,你会得到 /var/www/html/php/
换 $_SERVER['DOCUMENT_ROOT']
但仍然:
如果您有两个虚拟主机,请将它们区分!
更新
在上层虚拟主机中进行额外的重写(需要 mod_rewrite
激活),因此您可以删除第二个虚拟主机:
RewriteEngine On
RewriteRule ^/ph/(.*)$ http://www.mywebsite.com/ph/ [R=301,L]
或 [P,L]
如果你想隐藏你正在重写,但是 [P]
也需要 mod_proxy
被激活。
我访问了我网站的子文件夹并收到此错误:
PHP Warning: include_once(): Failed opening '/var/www/html//include/version.inc' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /srv/sparrow/php/include/branches.inc on line 3
似乎 $_SERVER['DOCUMENT_ROOT'] return 错误的目录如下:
/var/www/html/
如果我访问 www.my.website/php,这应该是 $_SERVER['DOCUMENT_ROOT' 的预期目录]] 应该 return:
/var/www/html/php/
这些是我的虚拟主机配置:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.mywebsite.com
DocumentRoot /var/www/html/
<Directory /var/www/html/>
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.mywebsite.com/ph
# Webroot of PHP site
DocumentRoot /var/www/html/php/
<Directory /var/www/html/php/>
Options -Indexes -MultiViews
</Directory>
</VirtualHost>
如何配置我的虚拟主机配置,以便如果我访问 www.my.website/php 它应该 return DocumentRoot 值为 /var/www/html/php/ ?
谢谢大家!
您在端口 80 上有两个虚拟主机。先赢。您应该通过 IP、服务器名或端口来区分它们。如果两个 运行 在同一个端口上,如果您使用的是 Apache 2.2(2.4 不需要),您还需要 NameVirtualHost 80
。
我很确定,如果你交换虚拟主机,你会得到 /var/www/html/php/
换 $_SERVER['DOCUMENT_ROOT']
但仍然: 如果您有两个虚拟主机,请将它们区分!
更新
在上层虚拟主机中进行额外的重写(需要 mod_rewrite
激活),因此您可以删除第二个虚拟主机:
RewriteEngine On
RewriteRule ^/ph/(.*)$ http://www.mywebsite.com/ph/ [R=301,L]
或 [P,L]
如果你想隐藏你正在重写,但是 [P]
也需要 mod_proxy
被激活。