include 成功执行返回整数1,非布尔true;失败时返回false但不可靠,因权限错误触发警告、语法错误直接中止、return语句返回自定义值;应预检file_exists()和is_readable()而非依赖返回值判断。

include 返回 1 表示文件被成功加载并执行
PHP 的 include 不是函数,而是语言结构,但它有返回值:只要目标文件存在、可读、语法无硬错误(比如未闭合的 {),且执行过程中没遇到 exit 或致命错误,include 就会返回 1。这不是“成功标志码”,而是 PHP 内部约定的“执行完成”信号。
注意:这个 1 和布尔 true 不等价;它只是整数 1,在条件判断中会被当作真值,但直接比较 === true 会失败。
为什么 include('xxx.php') === false 不可靠
include 在失败时返回 false,但这个 false 是“警告后继续执行”的结果,不是严格意义上的错误捕获机制。常见陷阱包括:
- 文件存在但权限为
000→ 返回false,同时触发E_WARNING - 文件里有
parse error→ 直接中止解析,include不返回任何值(不是false) - 文件里写了
return 'hello';→include返回字符串'hello',不再是1
所以别写 if (include 'a.php' === false) 来判断失败——应该用 @include 抑制警告 + 检查返回值类型,或改用 file_exists() + is_readable() 预检。
立即学习“PHP免费学习笔记(深入)”;
访问全球海洋潮汐模型。功能包括查询指定日期、时间和地点的潮高、潮汐极值及格点天气数据。
include_once 也返回 1,但逻辑更复杂
include_once 的返回值规则和 include 一致:首次包含成功 → 返回 1;已包含过 → 返回 true(注意:是布尔 true,不是整数 1);失败 → 返回 false。
这意味着你不能靠返回值区分“首次包含”和“跳过包含”。真正可靠的判断方式是检查内部状态:get_included_files() 能列出所有已被 include/include_once 加载的绝对路径,比返回值直观得多。
实际开发中几乎不用判断 include 的返回值
绝大多数场景下,你不需要关心 include 返回什么。它的设计本意就是“嵌入执行”,而不是“调用取结果”。典型误用:
- 把
include当作配置加载器,靠返回值判断是否生效 → 应该用require或json_decode(file_get_contents()) - 在循环里反复
include同一文件并检查返回值 → 必然撞上函数重定义错误,应改用include_once或提前加载 - 依赖
include返回值做业务分支 → 逻辑耦合过重,违背模块隔离原则
真正需要响应式加载的地方(比如插件系统),优先走 class_exists() 或 function_exists() 检测,而不是赌 include 的返回值。


















