WordPress内嵌PHP引入外部文件时提示文件不存在是什么原因?
问题核心原因
报错的本质是PHP相对路径寻址的基准目录不匹配,原理很简单:
- 你单独运行外部脚本时,PHP的工作目录就是你存放外部脚本的
folder文件夹本身,脚本里写的相对路径都会从这个文件夹出发找文件,所以所有引入都能正常找到。 - 你在WordPress中调用这个外部脚本时,PHP的当前工作目录是WordPress的根目录(也就是存放wp-admin、wp-content、wp-includes三个文件夹的目录),脚本里的相对路径会从WordPress根目录出发找文件,自然找不到你存放在
folder里的其他文件,就会抛出文件不存在的错误。
最简便的解决方法
不需要修改原有业务逻辑,只需要在你外部调用的index.php最顶部添加一行代码,强制把PHP的工作目录切回当前脚本所在的文件夹即可:
chdir(dirname(__FILE__));
添加完成后,后续所有相对路径的文件引入都会从你这个外部脚本的文件夹出发寻址,和你单独运行脚本的效果完全一致。
备选解决方案
如果上述方法不生效,你可以把脚本中所有相对路径的引入语句,都改为基于当前脚本位置的绝对路径写法:
- 原写法示例:
include './config.php'; - 修改后写法:
include dirname(__FILE__) . '/config.php';
这种写法会永久固定引入文件的寻址起点,完全不受运行环境的工作目录影响,兼容性更强。
内容的提问来源于stack exchange,提问作者Muky
相关产品推荐
相关产品推荐

