У меня есть скрипт bash, и теперь мне нужно преобразовать его в php, как cgi-скрипт. Посмотрим, что у меня есть строка bash
wget http://repo.domain/sources/latest_version.tar.gz > /dev/null 2>&1;
if [ $? != 0 ]
then
echo "Could not download file...";
exit 0;
fi
Если я запустил wget
с помощью php system/exec
, есть ли способ поймать статус выхода, например $?
используется в этом скрипте? Я прочитал, что загрузка файла может быть выполнена с помощью file_put_contents()
как здесь, в этой qaru.site/questions/27775/... Но я также беспокоюсь о части allow_fopen_url Off
как одном из упомянутых комментариев. Мне кажется, мне нужно более универсальное решение, сохраняющее изменения от bash to php минимум.
Как я могу получить статус выхода здесь? Любой намек, пожалуйста?
Существует функция exit
. Из документации php:
void exit ([ string $status ] )
void exit ( int $status )
Завершает выполнение скрипта. Функции выключения и деструкторы объектов всегда будут выполняться, даже если вызывается exit.
exit - это языковая конструкция, и ее можно вызывать без круглых скобок, если статус не передан.
Таким образом, в вашем случае это будет exit(0)
Edit: Ну, насколько я понимаю, wget - это команда linux shell, а не php, вы можете запустить ее и получить выход?
exec('wget http://repo.domain/sources/latest_version.tar.gz > /dev/null 2>&1', $output, $return_var);
Опять же, согласно документам:
return_var
Если аргумент return_var присутствует вместе с выходным аргументом, тогда статус возврата выполненной команды будет записан в эту переменную.
exit
, но мне не ясно. Разве это не остановит выполнение остальной части кода?
exit
останавливает текущий скрипт PHP и возвращает код завершения вызывающему экземпляру. Но вопрос в том, как получить код выхода, который был возвращен другой программой, например, wget
.
file_get_contents()
для доступа к чему-то, что находится не на вашем собственном сервере. Это может сломаться из-за конфигурации. И да, вы можете получить возвращаемое значение выполненных команд оболочки в PHP. Но это уже хорошо описано в руководстве по PHP .exec