如何判断PHP脚本是作为主文件运行还是被其他脚本引入?
判断PHP脚本是主运行还是被引入的可靠方法
针对你遇到的脚本重命名/移动后判断逻辑失效的问题,有两种通用且可靠的解决方式:
方法1:兼容所有PHP版本的动态路径对比
通过动态获取当前脚本和主脚本的绝对路径做对比,替代硬编码路径:
// 获取当前脚本的真实绝对路径 $currentFile = realpath(__FILE__); // 获取启动脚本(主文件)的真实绝对路径 $mainFile = realpath(get_included_files()[0]); // 判断当前脚本是否为主运行脚本 $isMainScript = ($currentFile === $mainFile);
realpath()会解析出文件的真实物理路径,不管脚本重命名、移动还是通过符号链接调用,都能正确匹配,彻底解决硬编码路径的缺陷。
方法2:PHP 7.4+ 直接使用__MAIN__常量
PHP 7.4及以上版本引入了__MAIN__内置常量,它的值就是启动脚本的绝对路径,直接对比即可完成判断,代码更简洁:
$isMainScript = (__FILE__ === __MAIN__);
注意事项
- 两种方法在Web环境和命令行环境下都能正常工作,无需区分运行场景。
realpath()会解析符号链接为真实路径,如果你的脚本依赖符号链接的路径显示,可以去掉realpath(),直接对比原始路径(但推荐保留,避免路径解析差异)。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

