Как выполнить shell при помощи php?

Здравствуйте!
Есть вот такая команда, которая отлично выполняется при помощи ssh:
curl https://sandbox.zamzar.com/v1/files/9364488/content \
 -u f9b: \
 -L \
 -O \
 -J


Выполняю при помощи строки:
$output = shell_exec('curl https://sandbox.zamzar.com/v1/files/9364488/content \ -u f9bddee74f393cf0f8a316771b0041fad5ca0f6a: \ -L \ -O \ -J');

Ничего не происходит!
А как ее выполнить при помощи php?

--------------------------

Решил данную проблему как оказалась на сервере включен - open_basedir. В результате чего curl выдавал ошибку: CURLOPT_FOLLOWLOCATION!
Всем спасибо а помощь!
  • Вопрос задан
  • 1364 просмотра
Решения вопроса 1
valerium
@valerium
Изобретая велосипед
Дело в обратных слэшах. Обратный слэш с последующим знаком переноса строки игнорируется, таким образом можно разбивать команду на несколько строк. Когда Вы записали команду в одну строку, обратные слэши стали самостоятельными аргументами, с которыми curl не знает что делать и выдаёт ошибку. Ошибка выдаётся на stderr, который игнорируется shell_exec, поэтому Вы ничего не видите. То есть, чтобы выполнить команду, нужно или вернуть переносы строк, или убрать слэши.

Ну и закономерный вопрос. Зачем Вам дергать curl через shell_exec, если его можно дёрнуть средствами самого PHP?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
27cm
@27cm
TODO: Написать статус
`curl https://sandbox.zamzar.com/v1/files/9364488/content ...`

php.net/manual/ru/language.operators.execution.php
Ответ написан
curl - это не глобальная команда. это исполняемый файл, который где-то есть, например, в /usr/bin/curl. лучше писать полный путь, потому что в shell может установлена переменная PATH, а в php её может не быть
Ответ написан
Ваш ответ на вопрос

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

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