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

迁移CMS站点到新主机后__DIR__、__FILE__仅返回basename而非全路径是什么原因

排查方向建议

  • 首先验证环境底层行为:在站点根目录新建独立测试文件test.php,不引入任何CMS代码,仅写入以下内容:
    <?php
    var_dump(__DIR__, __FILE__);
    $backtrace = \debug_backtrace();
    var_dump($backtrace[0]['file'] ?? '');
    
    直接访问该脚本:
    • 如果返回完整路径,说明问题是WordPress/Joomla内部代码导致,优先排查CMS安装的安全类、多站点类、路径重写类插件,以及主题自带的路径处理逻辑
    • 如果仍仅返回basename,说明是托管环境配置问题,按后续方向排查
  • 检查PHP核心配置:打印phpinfo()信息,重点查看以下配置项:
    • auto_prepend_file:如果该配置有值,说明托管商注入了全局前置运行脚本,大概率是该脚本内做了魔术常量的篡改/替换逻辑,可直接查看该文件的代码确认
    • open_basedir:部分异常的路径限制配置可能触发PHP内核的路径截断问题,可临时注释该配置测试
    • 已加载扩展列表:对比PHP7.4官方默认扩展列表,排查是否存在托管商自研的安全类、多租户隔离类扩展,此类扩展通常会Hook魔术常量的返回值做路径隐藏,可逐个禁用可疑扩展验证
  • 检查Web服务与PHP运行配置:
    • 若使用mod_php模式运行,查看Apache虚拟主机配置、站点目录下的.htaccess文件,是否存在php_admin_value类的配置篡改了路径相关参数
    • 若使用FPM模式运行,查看对应站点的FPM Pool配置,是否开启了chroot、chdir参数,或是设置了特殊的ENV变量篡改脚本路径
  • 确认是否开启OPcache异常配置:检查OPcache的opcache.use_cwd、opcache.validate_timestamps参数,若opcache.use_cwd被设为Off且缓存逻辑异常,可能出现路径返回错误的问题,可临时关闭OPcache测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:27:02