Как выполнить php-скрипт из другого php-скрипта с помощью оболочки?


У меня есть php-файл под названием sample.php со следующим содержимым:

<?php
echo "Hello World!";
?>

И что я хочу сделать, так это запустить этот php-скрипт, используя второй php-скрипт.

Я думаю, что shell_exec мог бы мне помочь, но я не знаю его синтаксиса.

Кстати, я хочу выполнить эти файлы с помощью cpanel. Поэтому я должен выполнить оболочку.

Есть ли какой-нибудь способ сделать это?

Author: chris-l, 2013-12-09

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<<<<
 6
Author: Randy, 2013-12-09 05:32:17

Вы можете использовать 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

 3
Author: James Binford, 2013-12-09 05:27:21

Вы можете попробовать это:

Основной файл 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!!!

Надеюсь, это поможет вам.

 2
Author: sagunms, 2013-12-09 05:39:17

Попробуйте это:

<?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);
?>

Это Может вам Помочь.

 1
Author: Sandeep, 2013-12-12 07:06:53

Важно подчеркнуть, что включение/выполнение пользовательского кода опасно. Использование системного вызова (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
================
 1
Author: towr, 2013-12-13 07:27:59
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

Я надеюсь, что вы ищете это

 0
Author: Abhijith A C, 2013-12-18 07:45:32

Перейдите к терминалу и введите

Php filename.php

Filename.php должно быть имя файла, который вы хотите выполнить!

 -3
Author: Ibrahim Khan, 2013-12-17 17:48:30