PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别

PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__

通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名:

<?php
echo 'SCRIPT_FILENAME 为:',$_SERVER['SCRIPT_FILENAME'];
echo '<br />';
echo '__FILE__ 为:',__FILE__;
?>

上述测试代码拷贝至 test.php 并访问该文件(http://127.0.0.1/php/test.php),得到如下结果:

SCRIPT_FILENAME 为:E:/web/html/php/test.php
__FILE__ 为:E:\web\html\php\test.php

提示:在 windows 平台测试,得到结果如上所示可能会出现路径分隔符的细微差别。

$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 区别

尽管 $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 非常相似,但在文件被 include 或 require 包含的时候,二者还是有细微区别。

将上述测试代码拷贝至 E:\web\html\php\common\inc.php ,然后在刚才的 test.php 文件内包含 inc.php :

<?php
include 'common/inc.php';
?>

这时候再访问 test.php 文件时,输出结果:

SCRIPT_FILENAME 为:E:/web/html/php/test.php
__FILE__ 为:E:\web\html\php\common\test.php

可见二者的差别是:$_SERVER['SCRIPT_FILENAME'] 反映的是当前执行程序的绝对路径及文件名;__FILE__ 反映的是原始文件(被包含文件)的绝对路径及文件名。

随机推荐

  1. Vue 源码分析——构造函数原型

    在执行 npm run dev 的时候 根据script/config.js 文件中的配置 'web-full-dev': { entry: resolve('web/entry-runtime-wi ...

  2. Ajax中异步与同步的区别

    同步可以解决,只有前一个请求结束后,当前请求才会发起.

  3. redis-数据类型及命令

    redis五大数据类型:string(字符串),hash(哈希,类似java的Map),list(列表),set(集合),zset(有序集合) 1.redis的键(key) keys 查询数据库中的k ...

  4. PHP获取一篇文章内容中的全部图片,并下载

  5. 使用docker-compose运行微服务项目#eureka+config+auth+gateway+module

    微服务架构中我们使用了必须的四个组件,eureka config gateway auth 其中config依赖eureka,auth依赖前两者,gateway又依赖auth 这样就确定了四个组件的启 ...

  6. STM32F103C8T6、STM32F103ZET6工程模板

    STM32F103C8T6工程模板,推荐使用以下最新版本 最终版 2018 7 16  https://pan.baidu.com/s/1lIdZ2awus_quVu332RvJ6Q https:// ...

  7. DOM操作和jQuery实现选项移动操作

    DOM: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  8. IC设计笔试面试小问题总结(随时更新)-IC设计笔记(三)

    都是一些细节性问题,放在一起记忆,一问一答的形式,有任何问题欢迎文章上方微博讨论,多思多想. 1.What makes the difference between Run time and CPU ...

  9. <c:out />的理解

    <c:out value="<string>" default="<string>" escapeXml="<tr ...

  10. 关于Oracle分区表的理解

    Oracle分区表首要目的是用于管理数据文件,对数据文件进行划分和管理.但常常会听到通过分区表来提高性能的说法,实际上,分区表结合索引,加上有效的SQL语句,确实可以提高性能.什么是有效的SQL呢,就 ...