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

如何修复PHP中的‘No such file or directory error’错误?附实际场景问题

解决PHP include子文件夹文件的路径问题

看起来你遇到的核心问题是单引号导致变量未解析,以及对PHP文件路径和HTML路径的区别理解不清。让我一步步帮你解决:

为什么你的代码会报错?

你写的代码:

include('$_SERVER[DOCUMENT_ROOT]/KungFu/php/hours.php')

在PHP中,单引号包裹的字符串不会解析变量,所以$_SERVER[DOCUMENT_ROOT]并没有被替换成实际的服务器根目录路径,反而被当成了字符串的一部分。更糟的是,PHP会把DOCUMENT_ROOT当成一个未定义的常量,自动转换为字符串'DOCUMENT_ROOT',最终传递给include的是一个无效路径,这就是报错的根源。

正确的解决方案

方案1:使用双引号解析变量(推荐)

把单引号换成双引号,同时注意数组键要用单引号包裹,并用大括号明确变量边界,避免语法歧义:

include("{$_SERVER['DOCUMENT_ROOT']}/KungFu/php/hours.php");

这样PHP会正确解析$_SERVER['DOCUMENT_ROOT']为你的XAMPP根目录(也就是C:\xampp\htdocs),最终路径会变成C:\xampp\htdocs\KungFu\php\hours.php,完全匹配目标文件的位置。

方案2:使用相对路径(更简单)

因为你的index.php在主文件夹KungFu下,而hours.php在同级的php子文件夹里,直接用相对路径更省心,不需要依赖$_SERVER变量:

include('php/hours.php');

这个路径是相对于当前执行的index.php的位置,PHP会自动定位到KungFu/php/hours.php文件。

为什么HTML的标签路径能正常工作?

HTML中的/KungFu/php/hours.php是网站根路径,它对应的就是服务器文件系统中的DOCUMENT_ROOT/KungFu/php/hours.php,和PHP绝对路径的逻辑一致。但要注意:HTML路径是给浏览器使用的,而PHP的include路径是给服务器文件系统使用的,两者上下文不同,但最终指向同一个文件,所以标签能正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:02:53