[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вызов system()
krasilich
Здравствуйте, у меня такой вопрос.

Есть некий скрипт 1.php
В этой же папке лежит 2.php

Какой параметр нужно передать функции system что бы 1.php запустил 2.php, дождался его выполнения и продолжил работу?

Дело происходит на локале, в денвере.

Да, и в чем разница между system() и exec()?



Спустя 1 час, 28 минут, 43 секунды (13.07.2009 - 21:03) Nikitian написал(а):
PHP
<?php
system
('./2.php');

или
PHP
<?php
exec
('./2.php');

или
PHP
<?php
echo 
`./2.php`;

system возвращает последнюю строку вывода, exec возвращает весь вывод. Хитрые кавычки тоже возвращают весь вывод. Вроде в этом отличия

Не забывайте дать права на запуск для скрипта 2.php и в его начале прописать
Код
#! /usr/bin/php5
ну или где у вас он валяется

Спустя 22 минуты, 55 секунд (13.07.2009 - 21:26) krasilich написал(а):
хм, так и думал, но не работает.... 1.php выполняется полностью, в месте где должен быть вывод из 2.php просто ничего нет. ошибок нет.

!#/usr/bin/php5 это путь к интерпретатору php?

Спустя 19 минут, 37 секунд (13.07.2009 - 21:46) Nikitian написал(а):
#! /usr/bin/php - путь к php-интерпретатору.

Спустя 1 минута, 22 секунды (13.07.2009 - 21:47) waldicom написал(а):
Цитата (Nikitian @ 13.07.2009 - 20:03)

...
Не забывайте дать права на запуск для скрипта 2.php и в его начале прописать 
Код
!#/usr/bin/php5
 ну или где у вас он валяется

Это есть не обязательное условие. Запускать можно и так:
PHP
shell_exec("php <PATH>/2.php");

Спустя 3 минуты, 35 секунд (13.07.2009 - 21:51) Nikitian написал(а):
Я буквально понял ТС:
Цитата
запустил 2.php

а ежели выполнить надо, то можно и вообще таким извращённым способом:
PHP
<?php
eval(file_get_contents(dirname(__FILE__).'/2.php'));

Спустя 17 минут, 50 секунд (13.07.2009 - 22:09) krasilich написал(а):
хм, не думал что когда то это скажу, но походу я идиот=)

Итак.

1.php
PHP
<?php
echo 
"start<br>";
shell_exec("php ./2.php");
echo "end";


2.php
PHP
<?php
!#/usr/bin/php5
echo "2.php";


Запускаю, выводит только start, end. Что не так? user posted image

Спустя 19 минут, 14 секунд (13.07.2009 - 22:28) Nikitian написал(а):
Пожалуй соглашусь с вами:
PHP
<?php
echo "start<br>";
echo 
shell_exec("php ./2.php");
echo 
"end";

Спустя 11 минут, 11 секунд (13.07.2009 - 22:39) Alchemist написал(а):
"Абрам Иваныч, вы либо крестик снимите, либо трусы наденьте..." (с)

Либо вы запускаете файл 2.php как пхп-скрипт, через интерпретатор, и тогда:
1) строка !#/usr/bin/php5 не нужна
2) запускается так: `php -f 2.php`; или shell_exec('php -f 2.php');

...либо вы запускаете файл 2.php как внешнюю программу и тогда:
1) у файла должен быть permission на выполнение (например 0555)
2) первой строкой файла (а не кода !!) должна быть строка !#/usr/bin/php5
3) запускается так: `2.php`; или shell_exec('2.php');

В обоих случаях результат работы файла не пойдет на вывод, а будет возвращен в запускающий скрипт. Если хочется увидеть результат на экране, то надо либо выполнять echo на возвращаемое значение, либо запускать скрипт через функцию passthru().

Спустя 7 минут, 44 секунды (13.07.2009 - 22:47) krasilich написал(а):
Понял свою ошибку. Спасибо за обьяснения.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.