2016-07-15 6 views
0

実際に実行されているコード行がeval()の内部から実行されているかどうかをチェックする方法は?誰かがこのようなことに対処しなければならなかったのですか?eval()内でコードが実行されているかどうかを確認する方法は?

+1

あなたは 'eval'機能をデフォルトをオーバーライドすることができ、ここではドキュメントを参照してくださいhttp://php.net/manual/en/function.override-function.php – cmorrissey

+0

'のvar_dump()は、 'で完全に正常に動作します'eval()'問題は、実行中にライブラリが 'eval()'の内部から実行されている場合に区別しなければならないことです。私はグローバル変数解決策を試しましたが、 'eval()'の内部では、外部からの変数と同じ変数にアクセスできます。 –

+1

悪い場合:スタックトレースを調べて、評価がどこから呼び出されたかを確認します。 xdebugにはこのための便利な機能がいくつかあります。あなたはxdebugをアクティブにしていますか? –

答えて

1

私は彼のアドバイスのためにRyan Vincentに感謝したいと思います!

function is_eval() { $debug = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); foreach ($debug as $step => $trace) { // ignore class calls if (isset($trace['class'])) { continue; } if (isset($trace['function']) && 'eval' === $trace['function']) { return true; } } }

0

これをeval関数に入れます。

debug_to_console( "コードラン");

関連する問題