Я хочу, чтобы eval()
, чтобы сделать функцию, которая называет ее и заканчиваться. Но я не хочу останавливать все приложение.Прерывание функции, вызывающей eval изнутри eval
Я использую include для включения стороннего приложения в свое приложение. Третье приложение в конечном итоге вызывает функцию, которая сначала позволяет мне вводить код через крючок, а затем в конце функции он просто вызывает exit();
.
Я не хочу редактировать их код вручную. И я также не хочу включать стороннее приложение, используя exec() или readfile() или curl(), или включать через http или любой другой подобный метод. Потому что я хочу, чтобы клиентский контекст оставался существующим по отношению к стороннему скрипту. (В противном случае сторонний скрипт будет считать, что мой собственный сервер является клиентом. Например, сторонний скрипт всегда будет видеть, что $_SERVER['REMOTE_ADDR']
- это 127.0.0.1
. И я не хочу этого.)
Короче говоря, следующее происходит:
Мое приложение:
// do stuff
// ...
chdir("path/to/third/party/application");
include ("path/to/third/party/application/index.php");
chdir("path/to/my/application");
// ...
// do more stuff
приложение Третья сторона:
// do some stuff
// ...
doLastStuff();
function doLastStuff() {
// doing some last stuff
// ...
$hook = "..."; // get code from database
if ($hook) {
eval($hook);
}
exit();
}
проблема заключается в том, что exit();
в конце также останавливает мой собственный скрипт. И я не хочу этого. Может ли кто-нибудь увидеть способ остановиться, чтобы избежать того, что exit()
останавливает мой скрипт, изнутри крючка?
Я могу положить любую цепочку внутри $ hook.
Eval = evil, просто давая вам знать :) –