1
回答
SERVER对象DOCUMENT_ROOT后面的斜杆问题
华为云实践训练营,热门技术免费实践!>>>   

最近项目赶工,回家偶尔也打开Zend Studio来看一看,解决下白天在公司没有解决的问题。殊不知ThinkPHP在自己机器上跑老出错,后来发现是项目路径问题。

因为还没有固定下来,所以项目的PATH和URL都是动态获取。

if(!defined(‘SITE_PATH’)) 
    define(‘SITE_PATH’ , str_ireplace(‘\\’,'/’,dirname(__FILE__)));

if(!defined(‘SITE_URL’)) 
    define(‘SITE_URL’ , ‘http://’.$_SERVER["HTTP_HOST"].str_ireplace(trim(str_ireplace(‘\\’,'/’,($_SERVER["DOCUMENT_ROOT"]))),”,SITE_PATH));

因为老是报出路径的错误,所以把SITE_URL和SITE_PATH输出了一下,SITE_PATH是对的,但是SITE_URL除了URL外后面还加了SITE_PATH,百思不解。。。
后来把SITE_URL的组成一截一截的拆开分别输出,意外的发现$_SERVER["DOCUMENT_ROOT"]输出的结果值有斜杆结尾,所以造成第二个宏定义里面的替换没找到替换对象,后来把第二个宏定义改成

if(!defined(‘SITE_URL’)) 
    define(‘SITE_URL’ , ‘http://’.$_SERVER["HTTP_HOST"].str_ireplace(trim(str_ireplace(‘\\’,'/’,($_SERVER["DOCUMENT_ROOT"]))),”,SITE_PATH.’/'));

在SITE_PATH后连上一个’/'用于匹配,问题解决了。但是在别的地方跑的好好的,怎么到我机器上来就多了个斜杆呢?带这问题我测试了另外一 个项目,在两个项目下分别输出phpinfo() 查看$_SERVER["DOCUMENT_ROOT"]的值。结果一个有斜杆结尾一个没有。。。。

这下我就迷糊了,这是怎么回事啊,初步怀疑是IIS设置站点路径的时候路径尾部加了斜杆,到IIS检查发现两个站点的路径都没有斜杆结尾,这个设想 失败。在检查路径的时候发现,两个项目的路径有一个区别,其中一个项目的路径中还有中文。难道是这个原因?后来把中文文件夹名称一改,phpinfo显示 的$_SERVER["DOCUMENT_ROOT"] 都没有斜杆结尾了。原来是这样,这种情况也许只在windows机器中出现,linux还没测试。

文章转自:http://blog.yation.com/webpro/php_server/

举报
鉴客
发帖于6年前 1回/843阅
顶部