2016-07-15 3 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");

Смежные вопросы