请问dirname(__FILE__)绝对路劲 一般在什么情况下用,就是说 什么时候 或者说什么文件 要用到绝对路劲dirname(__FILE__) 而什么时候 什么文件 需要用的相对路劲 谢谢!

解决方案 »

  1.   

    恰恰相反,__FILE__是代码所在文件的绝对路径,这个值在被别的文件include/require后也不会变化。
    一般是配置文件使用dirname(__FILE__)找到php站点根目录,然后功能文件引入配置文件后就可以根据站点根目录inclue/required其它文件。简单,清晰,不会出错。
      

  2.   

    可能我之前的理解有错,现在想搞明白!楼上说得“先读配置文件里的站点根目录,根据站点根目录再inclue/required其它文件”,为什么一定要这样呢,根据文件的当前目录不是一样可以inclue/required其它文件吗,而且更简单。难道是这样做有什么弊端吗?请解惑
      

  3.   


    这样不论代码文件部署在哪一层,你都可以轻易的引用别的文件。
    比如有一个文件/a/b/c/d/e/a.php
    你现在要require /a/b/c.php
    然后c.php又引入了/a/b/c/d/f.php
    f.php又引入了别的目录的文件。。那么是不是应该有基准的站点路径呢?
      

  4.   

    呵呵,除了结构,代码清晰,还有可能麻烦,假设情况如下./includes/  目录下有
    b.php  c.php 同时 b.php  require("c.php");./  目录下有
    a.php  require("includes/b.php");同时,还有c.php你会发现,删掉其中一个c.php文件,a.php都能require另一个c.php
      

  5.   

    什么时候用哪种方式当然要根据具体情况而定,而在一般的开发(特别是比较大型的开发)中,最好在一个配置文件中使用dirname(__FILE__)获取当前程序的绝对路径并保存为常量,当在其它地方导入包含的时候使用该常量+相对路径.例如:
    app/config.phpdefine('FS_DIR_PATH', dirname(__FILE__));
    ...
    在app/index.php需要导入app/include/classes/smtp.class.phprequire('config.php');//相对
    require(FS_DIR_PATH . 'include/classes/smtp.class.php');...