PHP require和include 路径问题

原创
2016-07-29 09:10:41 703浏览

??摘要:在学习ThinkPHP源码的时候,涉及到多个文件嵌套包含的问题,这时文件路径应该怎么确定?将在这里记录。

首先

??本文主要参考这篇文章。他讲的很详细,但是对于实用主义者来说,用不了那么多东西,我来讲的简单一些。

写在前面:我这里的所有路径(均是服务器绝对路径表示)说明如下:

  • apache服务器根目录:?/home/pi/www/
  • 项目文件根目录:??? /home/pi/www/mvcTest/2Test/
  • 项目入口文件:???? /home/pi/www/mvcTest/2Test/index.php
  • 要包含的下一个文件:? /home/pi/www/mvcTest/2Test/Framework/Framework.php
  • 再嵌套包含的文件:?? /home/pi/www/mvcTest/2Test/Framework/Common/function.php

相对路径

??相对路径以 ./ 开始(还有 ../ 用的很少),意思是以当前文件所在目录作为参考目录,但是这里有个误区,如果嵌套包含,就会出问题。
??问题在于PHP对于include require文件的解释是这样的:

include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。

??这就意味着,当index.php被调用的时候,下面两个被引用的文件内容,都被复制到了index.php一个文件里面。

所以:当嵌套的文件里面还需要include/require操作,使用相对路径的话,那么,参考的路径其实是入口文件所在的目录,而不是当前文件所在的目录。

绝对路径

??绝对路径是使用服务器(机器)文件系统的绝对路径,与apache服务器的根目录没有关系。
??绝对路径的使用比较简单,不容易混淆出错,下面提供一种技巧。

使用dirname(__FILE__);函数可以获取当前文件所在的绝对路径,然后就可以不用管当前文件的入口文件在哪,使用获取到的路径,再拼接一下字符串就OK了。

未确定路径

??即路径前面即不是 ./ 也不是 /
??这种东西不用去考虑了,使用上面两种正规方法就够了,不用管这个东西了。

<完>

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了PHP require和include 路径问题,包括了require方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一条:使用gdb调试php程序 下一条:初识laravel5