1

在我自己的测试中,我无法使用类似系统的命令冒泡异常。只是好奇是否有办法使这种情况发生?

测试1.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() );
   }
?>

测试2.php:

<?php

   // Throw an exception
   throw new Exception();       

?>

我知道它可以被包含捕获,但出于我的目的,我不能使用它。以这种方式执行脚本时,有没有办法捕获或“冒泡”异常?

4

2 回答 2

2

就像@minitech 说的那样,你必须听STDERR

当您通过访问命令调用 PHP 脚本时system(),它会将它们作为单独的进程运行,您的调用脚本无法访问该进程。

如果您想这样做,您可以查看POSIX扩展程序。

如果没有,您将不得不测试来自system()呼叫的响应,而不是试图捕捉Exception

于 2012-08-03T17:04:34.227 回答
1

不,你能做的最好的就是阅读 STDERR。php只能输出文本。

于 2012-08-03T16:59:58.627 回答