PHP中__FILE__和$_SERVER['PHP_SELF']的不同点
2015-01-22 19:24
281 查看
博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助的可以关注我。 转载请注明"深蓝的镰刀"
偶然碰到一个问题,在获取当前文件名时发现__FILE__与$_SERVER['PHP_SELF']略微不同。普通情况下,a1.php文件执行结果是相同的
<?php echo $_SERVER['PHP_SELF']; echo "\n"; echo basename(__FILE__);
结果:
a1.php
a1.php
但是如果用a2.php引用了a1.php,然后执行a2.php结果却不同
<?php require 'a1.php';
结果:
a2.php
a1.php
原因是什么我还没找到,我的理解是$_SERVER是个会在你执行脚本的同时设置的超级全局变量(Superglobals),所以得到的值当然就是你执行脚本的文件名,而__FILE__作为魔术常量(magic constant)既然属于常量,也就是一个固定值,不会随引用的不同而变化。不知理解的是否正确,有了解的同学还望提示一下。
相关文章推荐
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- $_SERVER['PHP_SELF']漏洞知多少
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- php $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'] $_SERVER['REQUEST_URI']区别
- PHP $_SERVER[PHP_SELF],[SCRIPT_NAME], ['REQUEST_URI']
- PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
- 单入口框架使用$_SERVER['PHP_SELF']遇到的问题
- 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- $_SERVER['PHP_SELF']和$_SERVER['SCRIPT_NAME']和$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"]
- $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']区别
- $_SERVER['PHP_SELF']和$_SERVER['SCRIPT_NAME']区别
- PHP中的$_SERVER['PATH_INFO']
- Zend Server提示Error: Could not locate a free PHP process from the "application/x-httpd-php" pool within the 'Connection Timeout'.
- __FILE__与$_SERVER['SCRIPT_FILENAME']的区别
- PHP中,把$_SERVER['QUERY_STRING']转换为$_GET数组
- php几个预定义变量$_SERVER['DOCUMENT_ROOT']
- apache php $_SERVER['SERVER_NAME']没有保存端口号的问题(解决)
- GoldenGate Data Pump 进程 report 报 WARNING OGG-01223 Cannot find executable file './server' 无法启动
- dirname(__FILE__) 与 PHP define() 及例子define('root',dirname(__file__))
- php几个预定义变量$_SERVER['DOCUMENT_ROOT']