__DIR__和 getcwd()的不同之处

__DIR__,PHP5.3的全局预定义常量,为当前文件的所在目录的绝对路径形式的表示,类似的还有__FILE__,为访问本文件的绝对路径。

getcwd()为get current working directory,即当前执行的脚本的目录位置,何为当前执行的脚本。

    index.php

<?php
    require_once('lib/init.php');
?>

   lib/ init.php

<?php
    echo __DIR__;
    echo '<br/>'
    echo getcwd();
?>

   结果会是:

    /xxx/xxx/lib  init.php所在的目录

    /xxx/xxx  index.php所在的目录

    __DIR__和其所在的文件有直接关系,getcwd()则与当前所执行的脚本存在直接联系,虽然getcwd()是在lib/init.php中但其被执行时是通过index.php引入执行的,即一直都是index.php为当前的活动脚本,其所处的目录为活动目录。

其实还有个很好的验证的方法,比如Thinkphp的单一入口模式,index.php承载了各种请求的入口,说白了你的所有请求都是被此入口脚本去做引入框架进行响应的,所以,当前活动目录肯定是此入口文件所在的目录,你可以在其下的任何一个控制器里输出__DIR__和getcwd(),你会发现__DIR__是此控制器脚本文件的目录位置,而getcwd()则是此入口文件所在的目录

你可能感兴趣的:(__DIR__,getcwd())