PHP include引用当前文件夹外文件不生效报错解决方法
问题原因
从报错信息可以定位到两个核心问题:
- 你书写的相对路径解析异常,原本预期的
../../private被解析为../..private,第二层上级目录跳转的斜杠分隔符失效,导致路径指向错误位置 - 相对路径引入本身依赖PHP运行时的当前工作目录,受入口脚本位置、include_path配置影响,稳定性极差,很容易出现找不到文件的问题
修复方案
临时修复(不推荐长期用)
先确认路径书写时每一层../后的斜杠没有遗漏,补全正确的相对层级:index.php位于globe_bank/public/staff/下,向上跳转2层才能到达globe_bank项目根目录,再进入private/shared目录找对应文件,代码如下:
<?php include('../../private/shared/staff_header'); ?>
注意:如果你的staff_header、staff_footer是PHP文件,必须补全.php后缀,Windows默认隐藏已知文件后缀,很容易出现漏写后缀导致的找不到文件问题
稳定修复(推荐)
使用PHP魔术常量__DIR__获取当前脚本所在的绝对路径,再拼接目标文件路径,完全不受工作目录、配置项影响,不会出现路径解析错误:
<?php // __DIR__ 直接获取当前index.php所在的绝对目录:C:\xampp\htdocs\globe_bank\public\staff include(__DIR__ . '/../../private/shared/staff_header'); include(__DIR__ . '/../../private/shared/staff_footer'); ?>
如果项目有公共初始化文件,可以提前在项目根目录定义根路径常量,后续引入文件更简洁:
// 放在globe_bank目录下的公共初始化文件中 define('PROJECT_PATH', dirname(__DIR__));
后续所有文件引入都可以直接用常量拼接:
include(PROJECT_PATH . '/private/shared/staff_header');
额外排查项
如果修改路径后仍然报错,检查两点:
- 确认
private/shared下的文件名和代码中书写的完全一致,注意大小写匹配 - 确认PHP进程对
private目录有读取权限,XAMPP默认环境无特殊修改不会有权限限制
内容的提问来源于stack exchange,提问作者BlazeCobalt
相关产品推荐
相关产品推荐

