1

次のコードを検討してください。

try {
    include_once "malformedFile.php";
} catch(Exception $e) {
    return null;
}

ファイルmalformedFile.phpが有効なPHPコードであるか、クラッシュしないか、die()を呼び出さないことを確認する方法がありません。malformedFile.phpが停止またはクラッシュした場合でも、どうすればキャッチを続行できますか?私の興味は、ユーザーがインクルードを介して独自のプラグインを実装できるようにしながら、アプリケーションを可能な限り堅牢にすることです。

ありがとう。

4

2 に答える 2

3

残念ながら、できません。含まれているコードが致命的なエラー(構文の誤りなど)を引き起こす場合、あなたは水中で死んでいます。

あなた試すことができるのは、ファイルを手動でロードしてから呼び出すことevalです:

$code = file_get_contents("malformedFile.php");
eval($code);

もちろん、これは、私たち全員が知っているようevalに悪などであるため、実行する前に3回考える必要があります。

最も堅牢なオプションは、あなたに代わって実行する別のプロセスを生成するincludeことです(したがって、予期せず停止しても大したことはありません)が、親プロセスと子プロセスの間の通信は、1つのプロセスを持つよりもはるかに困難になります。

于 2012-08-16T09:30:27.617 に答える
1

Includeソースが含まれますが、それを回避する方法はありません。

たぶん、このファイルを外部プロセスとして呼び出して、結果を使用することができます。これは、CLIスクリプトのように、または別のCURL呼び出しを使用して実行できます。

于 2012-08-16T09:32:10.093 に答える