解决IIS环境下PHP通过点斜杠(./)获取当前目录的问题(转)

在安装很多开源项目的时候,比如WordPress及康盛系列产品(Discuz!、SupeSite),我们经常发现即使项目安装成功了但访问某些页面的时候仍然会出现类似:
Warning: include_once(./xxx.php) [function.include-once]: failed to open stream: No such file or directory in D:sitedirxxx.php on line 2
这样的错误,该错误的意思是当前路径下找不到xxx.php文件,但我们都知道而且确定xxx.php文件明明就是在当前目录下的,为什么会出现找不到的情况呢,其根源当然还是路径问题,那我们就先来测试一下realpath()函数的返回值吧,执行echo realpath(./);后你会发现返回了一个莫名其妙的路径,这个路径跟你网站的物理路径毫无关系,很多网友都说把文件源代码中的./去掉就行了,这样确实也可以解决问题,但是并没有解决问题的根本,治标不治本的,况且如果./的用法在源代码中用的很多呢,岂不是要一个一个去找?

这个时候我想到了之前有在其他的IIS+PHP环境下安装过这些开源项目而且并没有出现此类问题,于是断定是环境配置的问题了,把其他正常环境下的php.ini文件找来对比一下各项参数的配置情况,发现有一个地方是有影响的:
;include_path = “.;c:phpincludes”
这里要去掉前面的分号,最好就改成:
include_path = “.”
改完后保存php.ini文件,重启IIS,再测试一下看看。
如果问题依旧,那就是Windows目录权限分配的问题了,这个网上也有人提到过的,给予当前目录的父目录的Users权限就OK了。