Я пытаюсь запустить команду CLI из скрипта PHP:
в частности, я хочу использовать эту команду для 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.
Я не эксперт, почему это работает не так, как ожидалось?
С наилучшими пожеланиями
ОБНОВИТЬ
Я использовал эту команду вместо $exec = "convert 4.png 4.tif 2>&1";
и я получил взамен [0] => sh: convert: command not found
Мне это кажется странным, потому что я могу использовать его из CLI!
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ
Большое спасибо, ребята!
$exec = "/usr/local/bin/convert a.png a.tif";
Эта команда решила проблему! Ты замечательный.
вы должны ввести fullpath в «convert» и могут быть файлами.
err 127 – файл не найден
Похоже, что двоичный код «convert» не находится ни в одном из каталогов на PATH
PHP. Вы можете попробовать использовать полный путь, например /opt/local/bin/convert
или любой путь.
Вы также можете изменить PATH, используемый PHP (но я не знаю, как).
PHP-скрипт, вероятно, не знает, где найти эти вещи, о которых вы говорите в команде exec
. Когда вы запустите это из командной строки, оболочка будет искать их в каталоге, в котором вы находитесь в данный момент времени; но когда вы запускаете его из PHP, он, вероятно, по умолчанию использует директорию PHP, а не конкретный каталог, в котором находятся ваши файлы. Итак, напишите полный путь.