php获取当前路径和目录的几种方法

  1. 使用__FILE__魔术变量
  2. 使用__DIR__魔术变量
  3. 使用超全局变量$_SERVER["PHP_SELF"]和$_SERVER[" _NAME"]以及$_SERVER[" _FILENAME"]
  4. 使用getcwd函数

他们之间的区别请看下面具体实例:

<?php
/**
 * php获取当前路径和目录的几种方法及区别
 * http://www.manongjc.com
 */
 
//__FILE__魔术变量用于获取当前文件的绝对路径
echo \"__FILE__的值为: \".__FILE__;  
echo \'<br/>\';
 
//__DIR__魔术变量用于获取当前脚本的目录
echo \"__DIR__的值为: \".__DIR__;
echo \'<br/>\';
 
 
/*超全局变量$_SERVER[\'PHP_SELF\']和$_SERVER[\' _NAME\']的结果一般都是一样的,它们都是获取当前脚本的文件名,只有当php以cgi方式运行时有区别,但是现在几乎找不到以cgi方式运行php了*/
echo \'$_SERVER[\"PHP_SELF\"]的值为: \'.$_SERVER[\'PHP_SELF\'];
echo \'<br/>\';
 
echo \'$_SERVER[\" _NAME\"]的值为: \'.$_SERVER[\' _NAME\'];
echo \'<br/>\';
 
//超全局变量$_SERVER[\" _FILENAME\"]用于获取当前执行脚本的绝对路径。记住,在CLI方式运行php是获取不到的
echo \'$_SERVER[\" _FILENAME\"]的值为: \'.$_SERVER[\' _FILENAME\'];
echo \'<br/>\';
 
 
//php getcwd()函数用于获取当前工作目录
echo \"getcwd():  ========>  \".getcwd();
echo \'<br>\';

运行结果为:

<##ads_in_article_manong##>

\"php获取当前路径和目录的几种方法及区别\"

 

这里特别强调一下__FILE__与getcwd()的区别

魔术常量__FILE__来获取当前文件的绝对路径,而不管当前的文件是否是被其他文件包含的,这在很多情况下是非常有用的,但有时当我们进行读写文件之类的操作时,相对的是当前脚本的工作目录,也就是入口php文件的目录,此时可以采用php提供的另一个函数 getcwd()来获取

请看下面实例:

<?php if (!defined(\' PATH\')) exit(\'No direct   access allowed\');  
include APPPATH.\'libraries/api/ .api.php\';  
include APPPATH.\'libraries/api/organ.api.php\';  
include APPPATH.\'libraries/api/task.api.php\';  
include APPPATH.\'libraries/api/pay.api.php\';  
  
class Notice extends MY_Controller{  
    public $coid = 0;  
  
    public function index(){  
        echo getcwd();  
        echo \'<br>\';  
        echo __FILE__;  
    }  
}  

运行的结果对比,差别就一目了然了:

/data/html/test.oa/public
/data/html/test.oa/application/controllers/notice.php
收藏 打印