1

私自身のテストでは、システムのようなコマンドを使用して例外をバブルすることができませんでした。これを実現する方法があるかどうか、ただ興味がありますか?

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();       

?>

インクルードでキャッチできることは知っていますが、私の目的では、それを使用できません。この方法でスクリプトを実行するときに、例外をキャッチまたは「バブルアップ」する方法はありますか?

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 に答える