你能在php致命错误上触发特定的退出状态吗?

时间:2015-05-14 15:07:59

标签: php bash

我尝试了以下内容:

<?php
function shutdown_find_exit()
{
    exit(50);
}
register_shutdown_function('shutdown_find_exit');

trigger_error("Fatal error", E_USER_ERROR);

?>

但仍然存在错误代码255。

我正在尝试返回错误代码50。

我正在使用以下bash脚本检查它:

php tester.php
status=$?
echo Exit Code: ${status}

根据所有感兴趣的人接受的答案更新代码:

<?php
function shutdown_find_exit()
{
    exit('50');
}
register_shutdown_function('shutdown_find_exit');

trigger_error("Fatal error", E_USER_ERROR);
?>

和bash脚本

output="$(php tester.php)"
status=$?
echo Exit Code: ${status}
if [[ $output == *"50"* ]]
then
  echo "Got 50";
fi

2 个答案:

答案 0 :(得分:1)

TL; DR:使用字符串,而不是int。

php exit( status )

  

如果status是字符串,则此函数仅打印状态   在退出之前。

     

如果status是整数,则该值将用作退出状态   而不是印刷。退出状态应该在0到254的范围内   退出状态255由PHP保留,不得使用。状态0   用于成功终止程序。

注意:PHP&gt; = 4.2.0如果是整数,则不会打印状态。

在bash中执行php脚本,将输出分配给变量。

variable = $(/path/to/php -f $HOME/path/to/my.php)

例如:

# just executing php, but capturing output then, prints it to console
status = $(/usr/bin/php -f $HOME/path/to/tester.php)
echo Exit Code: ${status}

希望这有帮助。

答案 1 :(得分:1)

看看这是否符合您的要求:

trigger_error("Fatal error", shutdown_find_exit());