include不会终止脚本,仅加载失败时触发E_WARNING并继续执行;被包含文件中的return只退出该文件,不中断主脚本。

include 不会终止脚本。
它只在加载失败时触发 E_WARNING,然后继续执行后续代码;即使成功包含的文件里有 return,也仅退出那个被包含的文件,不会中断主脚本。
include 失败时:警告但不停止
当 include 'missing.php'; 找不到文件,PHP 报出类似这样的警告:
Warning: include(missing.php): failed to open stream: No such file or directory in /path/to/script.php on line 5
但紧接着的 echo 'Hello'; 依然会输出。
-
include是“尽力而为”:失败不等于崩溃 - 适合非关键资源,比如可选的语言包、动态模板片段
- 若你依赖该文件中的函数或配置,却没做存在性判断,后续就可能抛出
Fatal error: Call to undefined function
被包含文件里写 return:只退出那个文件
假设 config.php 内容是:
<?php return ['db_host' => 'localhost']; ?>
那么这段代码:
立即学习“PHP免费学习笔记(深入)”;
$cfg = include 'config.php'; echo 'Loaded!'; // 这行仍会执行
return 在这里让 config.php 提前结束,并把数组作为 include 表达式的返回值赋给 $cfg;控制权立刻交还给主文件。
- 这种用法常见于配置文件,是 PHP 原生支持的模式
- 但如果误以为
return能中止整个脚本,就可能漏掉清理逻辑或响应头设置 -
require同样支持return,行为一致——只退出被包含文件
什么时候会真正终止脚本?看用的是哪个语句
真正能中断整个执行流的,是 require(加载失败时)和 exit/die(显式调用时):
-
require 'critical.php';→ 找不到就报Fatal error,脚本立即终止 -
include 'optional.php'; exit;→include成功后,exit才强制停住整个流程 -
return在全局作用域(即不在函数、也不在被include的文件里)直接写,会导致Parse error: syntax error, unexpected 'return'
include 本身,而取决于它是否失败、以及被包含内容里有没有 exit 或上层是否做了错误处理。很多人调试时卡在“为什么 return 没起作用”,其实是没意识到 return 的作用域边界只到被包含文件为止。



















