2012-02-22 4 views
2

Я пытаюсь запустить команду CLI из PHP сценария:Exec команда не работает, как ожидалось

, в частности, я хочу использовать эту команду convert a.png a.tif, чтобы преобразовать изображение в формате TIFF.

Когда я запускаю эту команду CLI он работает, как ожидалось, но если я запускаю из PHP скрипта с помощью следующего кода он не создает каких-либо TIFF изображения в моей папке:

$exec = "convert a.png a.tif"; 
exec($exec,$yaks,$err); 
echo "<pre>"; 
print_r($yaks); 
echo "$err"; 
echo "</pre>"; 

Кроме того $yaks пуст и $err установлено на 127.

Я не эксперт, почему это не работает должным образом?

С наилучшими пожеланиями

UPDATE

Я использовал эту команду вместо $exec = "convert 4.png 4.tif 2>&1"; и я получил взамен [0] => sh: convert: command not found

Это мне кажется странным, так как я могу использовать его с CLI!

FINAL UPDATE

Большое спасибо, ребята!

$exec = "/usr/local/bin/convert a.png a.tif"; 

Эта команда решила проблему! Ты прекрасна.

ответ

2

вы должны ввести полный путь к «конвертировать» и могут быть файлами.

эээ 127 - файл не найден

+0

Я пытаюсь написать полный путь, но я думаю, что это не основная ошибка, посмотрите на обновление. – KingBOB

+1

Как я уже сказал, вы должны использовать полный путь для преобразования. Я думаю, что он близок/usr/bin/convert. Как вы запускаете php-скрипт из CLI? – Electronick

1

РНР скрипт, вероятно, не знает, где найти эти вещи, которые вы имеете в виду в команде exec. Когда вы запустите это из командной строки, оболочка будет искать их в каталоге, в котором вы находитесь в данный момент времени; но когда вы запускаете его из PHP, он, вероятно, по умолчанию использует директорию PHP, а не конкретный каталог, в котором находятся ваши файлы. Итак, напишите полный путь.

+0

Он не распознает преобразование как действительную команду, но я пытаюсь использовать полный путь – KingBOB

2

Похоже, что двоичный код 'convert' не находится ни в одном из каталогов на PATH PHP. Вы можете попробовать использовать полный путь, например. /opt/local/bin/convert или каким бы то ни было образом.

Вы также можете изменить PATH, используемый PHP (но я не знаю, как это сделать).

+0

Я обновил вопрос с последними результатами! : D – KingBOB

+0

Для справки в будущем, я думаю (но я не тестировал) это так, как вы изменяете PATH, используемый PHP: 'putenv (« PATH = xyz »);' – Daan

Смежные вопросы