我通常使用原因(即exit()
)对我的PHP exit("You are not authorised to access this page");
进行编码,但我最近才注意到这会发送退出代码{ {1}}。
如何让0
发送退出代码为1或更高,同时仍然发送原因,但避免使用以下伪代码。
exit
重现此问题的代码;虽然它可能没有必要。 (在CLI中,但在网页上也是如此)
<?php
if ($user->isAdmin() !== true) {
echo "You are not authorised to access this page.";
exit(1);
}
我想这样做的原因是因为当我使用zarthus@zarth:~$ php -r "exit(1);"
zarthus@zarth:~$ echo $?
1
zarthus@zarth:~$ php -r "exit('a reason');"
zarthus@zarth:~$ echo $?
0
时,通常意味着程序已经进入了一个需要自行解决的阶段,因为出了问题,或者没有被授权。我想将此用于监控目的,以查看脚本是否完全完成。
答案 0 :(得分:4)
如果status是一个字符串,则此函数在退出之前打印状态。
如果status是整数,则该值将用作退出状态 而不是印刷。退出状态应该在0到254的范围内 退出状态255由PHP保留,不得使用。状态0 用于成功终止程序。
所以唯一的选择就是编写自己的退出函数:
function myExit($reason, $errorcode=1) {
if(defined("STDIN")) {
file_put_contents('php://stderr', $reason);
} else {
echo $reason;
}
exit($errorcode);
}