有两个目录A,B
在A中有个文件叫test.php的文件包含B中的test2.php,test2.php包含A中的test3.php,那么这样会造成什么问题?也就是问大家这样一个问题:被包含的文件中的require(),是在被包含前执行,还是在被包含后执行?
在A中有个文件叫test.php的文件包含B中的test2.php,test2.php包含A中的test3.php,那么这样会造成什么问题?也就是问大家这样一个问题:被包含的文件中的require(),是在被包含前执行,还是在被包含后执行?
=================================================
sorry,突然发现我没怎么看懂... :-(
其中,A目录下有一个文件叫1.php
B目录下有个文件叫2.php
现在:
love.php: require('A/1.php');
1.php: require('../B/2.php');如果是包含后再执行,那么1.php中的require的路径将会跑到love.php中,也就是从love.php所在目录开始来寻找'../B/2.php',很显然,这样是找不到的。
但是经我测试后发现,这样写包含竟然不会出错,那么PHP是怎么来处理的呢?
================================================================
为什么说找不到呢?
PHP是先找1.php,找到后,再在1.php找2.php...
-------------------------------
1.查看php.ini是否屏蔽了错误信息.
2.查看www同级目录是否存在a文件夹,而且里面好有个2.php.
Warning: require() [function.require]: open_basedir restriction in effect. File(../B/2.php) is not within the allowed path(s): (F:/LanLin/MyWorks/www/;F:/LanLin/ProgramFiles_2/APMServ5.2.0/PHP/uploadtemp/;F:/LanLin/ProgramFiles_2/APMServ5.2.0/PHP/sessiondata/) in F:\LanLin\MyWorks\www\A\1.PHP on line 2Warning: require(../B/2.php) [function.require]: failed to open stream: Operation not permitted in F:\LanLin\MyWorks\www\A\1.PHP on line 2Fatal error: require() [function.require]: Failed opening required '../B/2.php' (include_path='.;C:\php5\pear') in F:\LanLin\MyWorks\www\A\1.PHP on line 2
以上只是对我现在做的项目的一个模拟,但是项目中竟然不报错(使用require('/***')从根目录包含会报错),我也不管了,反正能用就行,肚子也饿了,回家吃饭是也......
/var/www/html/main.php
/var/www/html/include/a.php
/var/www/html/include/b.phpmain.php
require("include/a.php");a.php
require("include/b.php");