php - 文件中的 exit(1) 导致脚本状态代码 0

标签 php

在 Ubuntu 机器上:

$ php -v
PHP 5.5.10-1~dotdeb.1 (cli) (built: Mar  6 2014 18:55:59) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with uopz v2.0.4, Copyright (c) 2014, by Joe Watkins <krakjoe@php.net>
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

我的 test.php 文件很简单:

<?php 
exit(1); 

我希望这个命令 php test.php || echo "error" 以显示“错误”,但它以状态代码 0 退出。

$ php test.php
$ echo $?
0

但在同一台机器上,相同的代码,但不在文件中,可以按预期工作:

$ php -r "exit(1);" || echo "error"
error

$ php -r "exit(1);"
$ echo $?
1

在装有 php 的不同机器 (archlinux) 上:

PHP 5.5.13 (cli) (built: May 29 2014 05:46:58) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

所有情况都按预期工作,即使代码从文件运行时状态代码为 1。

这是一个真正的问题,因为 git hooks 依赖于这个状态代码,而 Jenkins 和我无法用谷歌搜索出来。

它会不会与配置有关?我检查了 cli php.ini 并没有发现任何可疑的东西。

最佳答案

uopz 扩展是问题所在。它“破坏”了退出代码。有一个 bug打开这个问题。

您可以尝试按照错误评论中的建议设置配置 uopz.overloads=0。不幸的是,那对我不起作用。只有禁用扩展才能解决问题。

关于php - 文件中的 exit(1) 导致脚本状态代码 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24404900/

相关文章:

PHP。如何从 2 个 mysql 表而不是 1 个表中获取数据

javascript - 在 yii 中提交 ajax 表单时遇到问题

php - 所有 WordPress 选项作为单个选项(序列化多维数组)还是多个选项?

php - 如何运行 MATLAB 代码以从 PHP 识别孤立的口语词?

php - 快速上传文件到PHP服务器

php - 如何列出MySQL数据库中匹配关键字并以年份结尾的所有表?

javascript - 使用 php javascript 在所有页面上应用临时 css 样式表

php - 将结果与 PHP/MySQL 中的另一个表进行比较

PHP/SQL : Why does the loop with mysqli_fetch_assoc not work?

php - 在PHP中实现非阻塞请求。如何