Posted on 2006-09-14 16:46
Jeff 阅读(1475)
评论(1) 编辑 收藏 引用 所属分类:
php配置文档
问题:wamp配置完后,从ip访问系统会出现fobidden的页面,
解决办法:在apache的配置文件httpd.conf中修改
<Directory "E:/web">下的Allow from 127.0.0.1
改为Allow from all
原因: 该版本的wamp下的apache默认的模式是只接受localhost(127.0.0.1)的http请求,所以出现从ip访问被forbidden的现象。
问题: wamp安装完后,会出现绝对路径"/"和DocumentRoot不一致的问题,"/"指向盘符根目录,而不是想象中的DocumentRoot.猜测可能是php配置的问题,可是一直找不到设置的地方,请知道的同志回复下.
解决方案:目前只能从软件上着手解决
1,在php.ini中设置一个include_path,比如设置为e:\web\func,然后将配置文件config.inc.php和其他公用文件放入这个目录下。如果在php文件中需要访问就直接include
但是这个方法有缺点:在申请的虚拟主机上不能进行这个操作,还要小心当include_path中存在和当前目录同名的文件时(比如这个文件是a.php),如果include "a.php";将会引用include_path中的a.php,如果是include "./a.php",将会引用当前目录下的
a.php.
2,从网站上摘录下来的方法,感觉不失为一种好办法:
b.1、先确定好一个程序的根目录,注意是文件系统下的,不是WEB服务器下的虚拟目录,不过一般情况下该目录下的子目录的相对路径与URL下该目录的虚拟子目录是相同的。
b.2、在定义好的程序根目录下的每个子目录下(其实不一定是每个,根据需要)建立一个settings.php,里面定义一个变量或是常数(常数比较好,因为作用域比较大),如APPROOT,但这个APPROOT却不是绝对路径,而是该目录相对于你指定的程序根目录的相对路径。
b.3、在此目录下的所有程序入口文件(也即第一个包含其它文件的文件,或是允许直接在浏览器中浏览的文件)中第一句写上require_once('settings.php');,但要注意,所有被包含文件最好不要加此句——其实加上也可以,因为你可以在settings.php中写上 if(!defined(APPROOT)) define(APPROOT, '../..');这类的语句以防重定义。
b.4、如果你要包含其它文件,无论是直接还是间接地包含,都可以写成 include(APPROOT.$path);,这里$path为被包含文件相对于你所指定的程序根目录的绝对路径。
原理:
定下的程序根目录是相对路径,但具体的目录位置是相对于那个根目录的绝对路径,两者组合起来就是具体文件相对于程序根目录的相对路径了。例如目录c:\wwwroot\app为你指定的程序根目录,然后有这么两个文件c:\wwwroot\app\a\index.php和c:\wwwroot\app\b\inc.php。对子目录a来说,APPROOT是'..',而对程序根目录来说,inc.php的绝对路径是$path='/b/inc.php',两者组合为'../b/inc.php'。如果要在index.php中包含inc.php就要写成include('../b/inc.php');,而这个路径不就正好是刚才组合而成的APPROOT.$path吗?