2016-07-15 85 views
0

如何檢查,如果實際正在執行的代碼行從eval()函數內部運行?有沒有人需要處理這樣的事情?如何檢查代碼是否在eval()內部執行?

+1

你可以覆蓋默認'eval'功能,看文檔這裏http://php.net/manual/en/function.override-function.php – cmorrissey

+0

'的var_dump()'在工作完全正常'的eval()'。問題是我必須區分,如果一個庫在運行時從'eval()'內部執行。我已經嘗試了全局變量解決方案,但在'eval()'內部,您可以從外部訪問相同的變量。 –

+1

更糟的情況:通過堆棧追蹤來查看eval從哪裏被調用? 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(「Code ran」);

相關問題