网页功能: 加入收藏 设为首页 网站搜索  
PHP中include()的使用问题
发表日期:2003-08-18作者:babystudio[] 出处:  

PHP中include()的使用问题

常常见有人询问关于使用include()时如何定位文件的问题,大体是这样:

这样一个文件系统结构

xxxx--|

   |-dirA-|

   |   |-A.php

   |   |-A2.php

   |

   |-dirB-|

       |-B.php

A.php

////////////////////////////////////

<?

echo('I am A.php . I have been included .'.'<br/>'.chr(10));

include('A2.php');

?>

////////////////////////////////////

A2.php

////////////////////////////////////

<?

echo('Hello , I am A2.php . I have been included .'.'<br/>'.chr(10));

?>

////////////////////////////////////

B.php

////////////////////////////////////

<?

echo('I am B.php . Now begin .');

include('../dirA/A.php');

?>

////////////////////////////////////

  有人会遇到访问B.php报错的情况————无法找到A2.php,便很困惑的来到菜鸟集中营CSDN江湖求助。

  看看大家的回答通常都是告诉无辜的提问者去检查一下php.ini中有关include_path的设置是否正确,是否包含了当前路径(用“.”表示)。偶也曾经做了一次不耐烦的大家,现在想起来真是————汗!

  在php安装好后,通常php.ini中的inlcude_path被设置为.;c:\php\includes(windows平台)或.:/php/includes(Unix系列平台,Linux),可以看到其中都是包含当前路径的。在一些Php分发中的php.ini中include_path前面用“;”注释掉,这时的inlcude_path内建值为.;c:\php4\pear或.:/php4/pear(其中的“4”是因为我使用的Php版本为4.x)。这样看来,问题通常都不是出在inlude_path变量值上(除非哪个whiteEat非把inlude_path改成外婆家!噢,偶旁边的外婆家酒店酒菜不错,价格公道、童叟无欺)。

  其实在上面的大家和提问人之间还有一个常被忽略的事实:Php的版本————这一次是小版本差异。

  在Php 4.0.x环境下,上面的例子是无法运行的,需要把A.php中的“include('A2.php');”改成“include('../dirA/A2.php');”,或者将A2.php拷贝一份放到目录dirB中,这通常都不是我们期望的————任务量太大。

  而在Php 4.2.x(含更高)环境下,上面的例子则可以通行无阻,并且前面所作修改后的脚本、文件系统结构也可以通过。

  清晰了。问题出在不同版本对“.”的解释不同。在4.0.x中,“.”仅仅被认为是(起始)脚本的执行路径;而在4.2.x中,它还包含当前文件的路径。从上面的例子中,当导入文档A.php后,这时的“.”将同时指向B.php的路径dirB和A.php的路径dirA。

  写到这里,忽然冒出一个问题:如果在4.2.x环境下,在dirB.php中刚好不幸也有一个A2.php文件,那么B.php最后会导入哪个路径下的A2.php呢?本来想把这个问题留给Php的MM们测试,然后请她们香高天下,但一想到压榨她们不长的几分钟的擦胭抹粉的时间实在于心不忍(“几”是 百 数量级的)。测试结果显示将包含dirB下面的A2.php。

  欢迎大家把更多的这类“小”问题贡献出来给我们的菜鸟集中营。

  注:上面的例子同样适用于require方法(以及后来的include_once()、require_once())。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 PHP中include()的使用问题
本类热点文章
  用PHP验证邮箱是否真实有效
  PHP5的变化与PHP6展望
  用户IP、浏览器、操作系统
  oracle资料库函式库
  oracle资料库函式库
  基于PHP的聊天室(二)
  基于PHP的聊天室(二)
  php调用mysql存储过程和函数的方法
  正则表达式在网络编程中的运用
  专家预言:PHP将比Java更受欢迎
  高效的中文字符串截取函数
  高效的中文字符串截取函数
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.01136