在不同的服务器环境中,PHP $_SERVER['DOCUMENT_ROOT']
super global有时带有斜线,有时没有。我以为这个问题与文件中如何DocumentRoot
定义Apache直接相关httpd.conf
:
即我会认为,如果不httpd.conf
包含斜杠:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
然后echo $_SERVER['DOCUMENT_ROOT']
应该给/ var / www / live / current
如果httpd.conf
包含斜线:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
然后echo $_SERVER['DOCUMENT_ROOT']
应该给/ var / www / live / current /
在Ubuntu 10.04上就是这种情况,但是在RHEL 5.5上,$_SERVER['DOCUMENT_ROOT']
即使在Apache上未定义,也添加了斜杠。
知道为什么会这样吗?我是否缺少配置参数?
以供参考:
- RHEL的PHP 5.3.3(发生):PHP 5.3.3(CLI)(建立:2010年7月23日16:26:53)
- PHP版本的Ubuntu(没有问题):带有Suhosin-Patch的PHP 5.3.2-1ubuntu4.2(cli)(内置:2010年5月13日20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
。它会自动删除所有多个斜杠以及结尾的斜杠。如果您始终希望将斜杠连接到上述对的调用结果中realpath()
。不在里面。