You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP技术问答:如何获取主文件中被引入文件的文件名?

解决PHP中获取被引入文件文件名的问题

这问题我之前做项目时也碰到过!$_SERVER["PHP_SELF"]确实只会返回当前执行的主脚本文件名(也就是你这里的particular.php),因为它是基于Web服务器接收请求的入口文件生成的。要获取被include的文件本身的文件名,得用PHP的魔术常量__FILE__来实现,下面给你几种实用的方案:

方案1:直接在被引入文件中获取

在family.php里直接使用__FILE__常量,它会返回当前文件的完整绝对路径,再配合basename()函数就能提取纯文件名:

// family.php 中的代码
$includedFileName = basename(__FILE__);
// 要是只需要不带后缀的文件名,可以用 basename(__FILE__, '.php')

// 后续重定向时直接用这个变量即可
header("Location: $includedFileName");

这个方法最直接,因为__FILE__不管被引入到哪个主文件里,始终指向它所在的那个文件本身,完全不受主文件影响。

方案2:在主文件中获取被引入文件的文件名

如果需要在主文件particular.php中拿到被引入文件的名字,可以在被引入文件里定义一个变量,主文件引入后直接调用:

// family.php
$currentIncludedFile = basename(__FILE__);

// particular.php
include 'family.php';
// 现在 $currentIncludedFile 就是 family.php,直接用它做重定向
header("Location: $currentIncludedFile");

方案3:批量处理多个被引入文件

如果你有很多需要自动重定向的被引入文件,可以在每个被引入文件里封装一个通用函数,避免重复代码:

// 每个被引入文件(比如 family.php、other.php)的顶部添加这个函数
function getThisIncludedFileName() {
    return basename(__FILE__);
}

// 在主文件中使用
include 'family.php';
header("Location: " . getThisIncludedFileName()); // 重定向到 family.php

include 'other.php';
header("Location: " . getThisIncludedFileName()); // 重定向到 other.php

简单总结下:$_SERVER["PHP_SELF"]是入口文件的标识,而__FILE__是单个PHP文件自身的标识,后者正是你需要的工具~

内容的提问来源于stack exchange,提问作者tapaljor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:04:01