Intereting Posts
Не предоставляйте никому доступа в каталоге .htaccess Как создать пользователя для db в postgresql? PHP GD не корректно отображает шрифты unicode Многомерный массив Найти и обновить значение с помощью PHP Как выполнить запрос на соединение с помощью конструктора запросов Symfony и Doctrine Query Builder PHP: инструкция «или» при сбое инструкции: как выбросить новое исключение? Передача данных в памяти на FTP-сервер без использования промежуточного файла Recaptcha не работает на https CodeSniffer sniff для генерации графиков зависимостей для PHP-кода? как изменить ключ массива, чтобы начать с 1 вместо 0 Как загрузить шаблон из полного пути в движок шаблонов TWIG многоадресная матрица natsort Сохранение смещений файлов при разборе HTML с помощью DOM? Масштабирование изображения с использованием PHP и поддержание соотношения сторон Как загрузить контроллер с другого контроллера в codeigniter?

Команда Exec работает не так, как ожидалось

Я пытаюсь запустить команду 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, а не конкретный каталог, в котором находятся ваши файлы. Итак, напишите полный путь.