在我自己的测试中,我无法使用类似系统的命令冒泡异常。只是好奇是否有办法让这种情况发生?
test1.php:
<?php
try {
// None of these (which throw an exception)
// allow exception to be caught here
passthru("php -f test2.php");
system("php -f test2.php");
exec("php -f test2.php");
} catch (Exception $e) {
echo( "Caught exception: " . $e->getMessage() );
}
?>
test2.php:
<?php
// Throw an exception
throw new Exception();
?>
我知道它可以通过include来捕获,但对于my purposes,我不能使用它。有没有办法在执行脚本时捕获或“冒泡”异常?
答案 0 :(得分:2)
就像@minitech说的那样,你必须听STDERR
。
当您通过system()
访问命令调用PHP脚本时,它会将它们作为一个单独的进程运行,您的调用脚本无法访问它。
如果您想这样做,您可以查看POSIX
扩展程序。
如果没有,您必须测试system()
来电的响应,而不是试图抓住Exception
答案 1 :(得分:1)
不,你能做的最好就是阅读STDERR。 php
只能输出文字。