2016-07-15 89 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”);

相关问题