php эквивалент состояния выхода в bash

0

У меня есть скрипт 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 минимум.

Как я могу получить статус выхода здесь? Любой намек, пожалуйста?

  • 1
    В PHP по умолчанию для загрузки внешних файлов используется cURL . Никогда не используйте file_get_contents() для доступа к чему-то, что находится не на вашем собственном сервере. Это может сломаться из-за конфигурации. И да, вы можете получить возвращаемое значение выполненных команд оболочки в PHP. Но это уже хорошо описано в руководстве по PHP .
  • 0
    да, но люди могут удалить cURL правильно? Вот почему я думал придерживаться функции exec
Показать ещё 2 комментария
Теги:
file

1 ответ

1
Лучший ответ

Существует функция 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 присутствует вместе с выходным аргументом, тогда статус возврата выполненной команды будет записан в эту переменную.

  • 0
    Спасибо за ответ. Я видел exit , но мне не ясно. Разве это не остановит выполнение остальной части кода?
  • 0
    exit останавливает текущий скрипт PHP и возвращает код завершения вызывающему экземпляру. Но вопрос в том, как получить код выхода, который был возвращен другой программой, например, wget .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню