本文目录导读:

- 如何设置退出码
- 常见的退出码约定(Unix/Linux / shell 标准)
- 在 PHP 中实际使用示例
- PHP 中退出码的数值限制
- 在 Web SAPI(Apache/Nginx)中使用退出码
- 退出码与错误处理陷阱
在 PHP 中,“退出码”(Exit Code / Exit Status)是一个整数,用于在 CLI(命令行)模式下向操作系统或调用它的父进程(如 Shell、CI 系统)返回执行结果。Web 模式下通常不使用退出码(浏览器不关心这个)。
如何设置退出码
使用 exit() 或 die() 函数,传入一个整数参数即可:
<?php // 正常退出 exit(0); // 或者表示出错的退出码 exit(1);
注意:如果不传参数,默认退出码为
0,如果传入非整数(如字符串),PHP 8.0+ 会报弃用警告(Deprecated),实际会强制转为0。
常见的退出码约定(Unix/Linux / shell 标准)
| 退出码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 一般错误(未分类错误) |
| 2 | 错误使用命令/参数 |
| 126 | 命令不可执行 |
| 127 | 命令未找到 |
| 128 | 无效的退出参数 |
| 130 | 脚本被 Ctrl+C 终止 |
| 255 | 退出码超出范围(PHP中有限制) |
如果你自己编写脚本,0 = 成功,非0 = 某种错误 是基本规则。
在 PHP 中实际使用示例
示例1:检查某个条件,返回不同退出码
<?php
$file = 'config.php';
if (!file_exists($file)) {
fwrite(STDERR, "错误:配置文件不存在\n");
exit(1); // 返回 1 表示一般错误
}
// 加载配置成功
exit(0);
示例2:在 Shell 中判断执行结果
php myscript.php
if [ $? -eq 0 ]; then
echo "执行成功"
else
echo "执行失败,退出码: $?"
fi
是 Shell 中上一个命令的退出码。
PHP 中退出码的数值限制
- PHP 内部只支持 0 ~ 255 的整数。
- 如果你传入
exit(256),实际会被截断为0(二进制只会保留低 8 位)。 - 传入负数会有不可预测的行为,建议只用 0 ~ 255。
在 Web SAPI(Apache/Nginx)中使用退出码
Web 环境下,exit() 不会向浏览器发送退出码,而只是停止脚本执行,如果你想在 Web 响应中传递“状态”,应该使用 HTTP 状态码(如 http_response_code(404)),而不是退出码。
退出码与错误处理陷阱
- 使用
exit(1)并不会触发 PHP 的错误处理机制(如set_error_handler)。 - 想精确表示不同类型的错误,可以自己定义退出码映射(1 = 文件不存在,2 = 数据库连接失败,3 = 参数错误等),这样外部调用脚本就能根据退出码做不同处理。
| 用法 | 含义 |
|---|---|
exit(0); |
正常退出,成功 |
exit(1); |
一般错误 |
exit(2); |
参数错误等 |
exit(255); |
最大值(再大就截断) |
exit; / exit(); |
默认退出码 0 |
在编写 CLI 工具、定时脚本、CI/CD 流程中,正确使用退出码是对调用者的基本尊重。