Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Исполнение php-сценария
ТвойWeb » WebMaster класс » PHP/Perl » Исполнение php-сценария

Страниц (1): [1]
 

1. Aleksej - 30 Декабря, 2005 - 12:10:40 - перейти к сообщению
Есть некоторый php-скрипт, который берет из БД код php-скрипта и должен его исполнить. Функция eval не подходит, т.к. есть вероятность повредить некоторые глобальные переменные. Я хочу исполнить код из БД так, что бы получить результат его работы (вывод) и при этом ни как не повредному скрипты.
Пусть $source_php содержит код, который нужно исполнить.
Так вот я решил запустить интерпретатор php и передать ему этот код, а затем получить результат.
Вот так:
CODE:
$fl = fopen ($fname, "w");
flock ($fl, LOCK_EX);
fputs ($fl, $source_php);
flock ($fl, LOCK_UN);
fclose ($fl);
$return_var = 0;
$output = array();
$php = ( isset ($_SERVER['ORIG_SCRIPT_FILENAME']) && ! empty ($_SERVER['ORIG_SCRIPT_FILENAME']) )
? $_SERVER['ORIG_SCRIPT_FILENAME']
: $_SERVER['ORIG_SCRIPT_NAME'];
exec ("\"$php\" \"$fname\"", $output, $return_var);
unlink ($fname);

Где $fname - имя временного файла.
После выполнения переменная $output пустая, а $return_var содержит код ошибки, равный 1.
Вопрос: что сделано не верно? При этом, если точно так же запустить интерпретатор php из консоли, то все работает правильно. А тут нет...
Если есть другое решение описанной задачи - будет только лучше (без создания временных файлов).
Заранее благодарен за помощь!

P.S. Переменная $php будет содержать правильный путь к интерпретатору, проблема не в получении его адреса.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0312]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33