PHP 应用路径变量问题总结


在程序开发中,总是遇到__FILE__、__DIR__、dir()等等,有时想用时又要查一下,所以这里总结下。


正文

getcwd()  // 显示是 在哪个文件里调用此文件 的目录, 是命令入口文件所在目录,如  /var/www/html/test/public

__DIR__   // 当前内容写在哪个文件就显示这个文件目录,如 /var/www/html/test/backend/controllers

__FILE__   // 当前内容写在哪个文件就显示这个文件目录+文件名,如 /var/www/html/test/backend/controllers/AdminController.php

__FUNCTION__   // 返回当前函数名,如 actionGetAgentOne

__METHOD__   // 返回当前类方法名,如 backend\controllers\AdminController::actionGetAgentOne

另外配合用的比较频繁的还有

basename()  // 函数返回路径中的文件名部分,如 basename("/var/www/html/test/backend/controllers/AdminController.php"); 返回 AdminController.php

dirname(path)  // 返回路径中的目录部分,如 dirname("/var/www/html/test/backend/controllers/AdminController.php"); 返回 /var/www/html/test/backend/controllers

pathinfo()  // 返回文件路径的信息,如 pathinfo("/var/www/html/test/backend/controllers/AdminController.php"); 返回

array(4) {
["dirname"]=>
string(38) "/var/www/html/test/backend/controllers"
["basename"]=>
string(19) "AdminController.php"
["extension"]=>
string(3) "php"
["filename"]=>
string(15) "AdminController"
}

realpath()  // 返回规范化的绝对路径名

在程序开发中,经常会看到一个目录操作的方法或函数,自己也时常会使用到,到关于应用路径的变量、函数、方法有些多,下面总结下。

/var/www/yii2_1108/backend/web/index.php 里面打印看看

echo __FILE__;  // /var/www/yii2_1108/backend/web/index.php

echo __DIR__;  // /var/www/yii2_1108/backend/web

echo dirname(__FILE__);  // /var/www/yii2_1108/backend/web

echo $_SERVER["PHP_SELF"];  // /index.php 

echo $_SERVER["SCRIPT_NAME"];  // /index.php

// $_SERVER['PHP_SELF']和$_SERVER['SCRIPT_NAME']的结果一般相同,他们都是获取当前脚本的文件名,
// 只有当php以cgi方式运行时有区别,但是现在几乎找不到以cgi方式运行php了

echo $_SERVER["SCRIPT_FILENAME"];  // /var/www/yii2_1108/backend/web/index.php , 当前执行脚本的绝对路径。记住,在CLI方式运行php是获取不到的

echo $_SERVER["DOCUMENT_ROOT"];  // /var/www/yii2_1108/backend/web , 当前运行脚本所在的文档根目录,在服务器配置文件中定义

echo getcwd();  // /var/www/yii2_1108/backend/web , getcwd()返回当前工作目录






参考资料

https://www.cnblogs.com/forthxu/p/3232505.html

https://www.jb51.net/article/107399.htm

常用PHP设计模式: https://yuanxuxu.com/2014/01/27/chang-yong-phpshe-ji-mo-shi/

https://www.cnblogs.com/hf8051/p/4613103.html

PHP 文件处理相关函数 https://ibaiyang.github.io/blog/php/2018/08/12/PHP-%E6%96%87%E4%BB%B6%E5%A4%84%E7%90%86%E7%9B%B8%E5%85%B3%E5%87%BD%E6%95%B0.html

Filesystem 函数 http://www.w3school.com.cn/php/php_ref_filesystem.asp

pathinfo http://www.w3school.com.cn/php/func_filesystem_pathinfo.asp


返回