Driver86
@Driver86
Немодератор toster.ru

Почему exec ничего не выводит, хотя через командную строку вывод есть?

<?php

$returnStrings = [];
$returnCode = 0;
$e = exec('cd /tmp && curl --connect-timeout 10 --max-time 10 --raw --fail --remote-name http://site.ru/123.png', $returnStrings, $returnCode);

var_dump($e);
var_dump($returnStrings);
var_dump($returnCode);


Почему и $e, и $returnStrings - пустые? Хотя эта же команда, набранная в shell (putty), т.е.:

cd /tmp && curl --connect-timeout 10 --max-time 10 --raw --fail --remote-name http://site.ru/123.png


выводит всё как надо: и прогресс curl и его сообщение об ошибке (HTTP 503) с кодом 22.

P.S. Только $returnCode не пустая (== 22 в моём примере).
P.P.S. Подозреваю, что дело в том, что там более одной команды (но не ясно, чем это мешает php'у), но как тогда curl'у указать корневую папку для сохранения файла?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
как тогда curl'у указать корневую папку для сохранения файла?

Вам тут cd вообще не нужен.
$ curl --help | grep -i "\-o,"
 -o, --output <file> Write to file instead of stdout
 -O, --remote-name   Write output to a file named as the remote file
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
myjcom
@myjcom
Вы мануалы читаете?
php.net/manual/ru/function.exec.php
;)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы