<?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'у указать корневую папку для сохранения файла?