Как выполнить php-скрипт из другого php-скрипта с помощью оболочки?
У меня есть php-файл под названием sample.php
со следующим содержимым:
<?php
echo "Hello World!";
?>
И что я хочу сделать, так это запустить этот php-скрипт, используя второй php-скрипт.
Я думаю, что shell_exec
мог бы мне помочь, но я не знаю его синтаксиса.
Кстати, я хочу выполнить эти файлы с помощью cpanel
. Поэтому я должен выполнить оболочку.
Есть ли какой-нибудь способ сделать это?
7 answers
Если вам нужно записать выходные данные php-файла в переменную, используйте функции ob_start и ob_get_contents. См. ниже:
<?php
ob_start();
include('myfile.php');
$myStr = ob_get_contents();
ob_end_clean();
echo '>>>>' . $myStr . '<<<<';
?>
Так что, если ваш 'мой файл.php' содержит следующее:
<?php
echo 'test';
?>
Тогда ваш вывод будет:
>>>>test<<<<
Вы можете использовать cURL для удаленных запросов. Ниже приведено из php.net :
<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
// grab URL and pass it to the browser
curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
?>
Вот хороший учебник: http://www.sitepoint.com/using-curl-for-remote-requests/
Подумайте также о том, чтобы посмотреть это видео на YouTube здесь: http://www.youtube.com/watch?v=M2HLGZJi0Hk
Вы можете попробовать это:
Основной файл PHP
<?php
// change path/to/php according to how your system is setup
// examples: /usr/bin/php or /opt/lampp/bin/php
echo shell_exec("/path/to/php /path/to/php_script/script.php");
echo "<br/>Awesome!!!"
?>
Дополнительный PHP-файл
<?php
echo "Hello World!";
?>
Вывод при запуске основного файла PHP
Hello World!
Awesome!!!
Надеюсь, это поможет вам.
Попробуйте это:
<?php
// change path/to/php according to how your system is setup
// examples: /usr/bin/php or /opt/lampp/bin/php
$output = shell_exec("/path/to/php /path/to/php_script/script.php");
print_r($output);
?>
Это Может вам Помочь.
Важно подчеркнуть, что включение/выполнение пользовательского кода опасно. Использование системного вызова (exec
, shell_exec
, system
) вместо include
помогает отделить контекст выполнения, но это не намного безопаснее. Подумайте о надлежащей санитарии или песочнице.
Имея это в виду, вот рабочий пример, включающий создание (временного) файла, его выполнение и очистку:
<?php
// test content
$code = <<<PHP
echo "test";
PHP;
// create temporary file
$d=rand();
$myfile="$d.php";
file_put_contents($myfile,"<?php\n$code\n?>");
// start capture output
ob_start();
// include generate file
// NOTE: user-provided code is unsafe, they could e.g. replace this file.
include($myfile);
// get capture output
$result = ob_get_clean();
// remove temporary file
unlink($myfile);
// output result
echo "================\n" . $result . "\n================\n" ;
Вывод:
================
test
================
terminal view:
abgth@ubuntu:/var/www$ cat > test.php
<?php
echo shell_exec("php5 /var/www/check.php");
?>
abgth@ubuntu:/var/www$ cat > check.php
<?php
echo 'hi';
?>
abgth@ubuntu:/var/www$ php5 test.php
hi
Я надеюсь, что вы ищете это
Перейдите к терминалу и введите
Php filename.php
Filename.php должно быть имя файла, который вы хотите выполнить!