Как отключить функцию exec PHP для печати в оболочку? - PullRequest
2 голосов
/ 03 сентября 2010

У меня следующий php-код:

exec('curl -X POST http://mysite.com', $output =array());

Возвращаемая строка my http://mysite.com не отображается на оболочке, но отображается следующая строка:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     3    0     3    0     0     19      0 --:--:-- --:--:-- --:--:--     0

Я не хочу ничего отображать на оболочке.Как отключить priting в оболочку при использовании команды exec ().Есть другие команды?

Ответы [ 2 ]

7 голосов
/ 03 сентября 2010

Использовать параметр молчания curl: -s

exec('curl -s http://us.php.net/manual/en/function.ob-clean.php', $output);
2 голосов
/ 31 мая 2016

Вывод потока stdout фиксируется функцией php exec().Однако поток stderr отсутствует, поэтому причина, по которой некоторые вещи появляются на экране, а другие - нет.

В этом случае это происходит потому, что curl выводит информацию о состоянии наstderr stream.

Решения:

  • Перенаправление stderr на нулевое устройство с добавлением 2>/dev/null к командевыполняется exec() (2> nul в Windows).Это приведет к удалению любых сообщений, отправленных на stderr .

  • , или перенаправит поток stderr на stdout , добавив 2>&1 вместо.Это позволит захватывать оба выхода с помощью exec() на тот случай, если они понадобятся вам в вашем php-скрипте.

Для конкретного случая, о котором идет речь, используйте опция молчания curl может иметь больше смысла.: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...