这个问题,除了Discuz!各系列,其实还有很多程序会出现,比如wordpress等。
由于这类问题多次出现,于是在这里做一个解决记录。
简单来讲,这个问题是由于目录权限不足解决的,特别是在Windows+IIS中经常出现。
[php]require_once('./include/common.inc.php')[/php]
这句代码大约的意思是,取得当前程序文件所在的顶级目录下,某个目录下的文件,这里就要求访问上级目录的权限。
一开始我也没有找到原因所在,后来写了一句代码,来查看请求的目录,才发现一个奇怪的问题。发现"./"这样的代码,请求的目录竟然是分区所在的盘符。
如当前文件是:D:/www.4wei.cn/index.php,则Iuser用户则需要有“D:/”的可读权限。一般的安全设置下,根盘符一般权限较小,就会造成这个错误产生。
那,知道这个问题了,就有解决办法了。
一,将整个程序下移一个目录,将 D:/www.4wei.cn/index.php 改成 D:/www.4wei.cn/bbs/index.php。
二,然后给www.4wei.cn/bbs目录加上读取权限,包括文件夹中的权限和IIS中的目录读取权限。
三,网上有人说需要还要使用IIS中的父路径,我想应该无关,经测试,是否启用父路径,都不影响,当然,启用父路径也不是什么坏事。
最后,说一下程序开发方面的建议,上面的代码可以这样写。
[php]require_once (dirname(__FILE__) . "/include/common.inc.php");[/php]