PHP 怎么PHP 退出码

wen PHP项目 1

本文目录导读:

PHP 怎么PHP 退出码

  1. 如何设置退出码
  2. 常见的退出码约定(Unix/Linux / shell 标准)
  3. 在 PHP 中实际使用示例
  4. PHP 中退出码的数值限制
  5. 在 Web SAPI(Apache/Nginx)中使用退出码
  6. 退出码与错误处理陷阱

在 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 流程中,正确使用退出码是对调用者的基本尊重。

抱歉,评论功能暂时关闭!