Как это сделать i...php команда exec() не работает с другими приложениями
У меня есть приложение, которое было разработано с использованием php, и я хочу напечатать размытое изображение через свой принтер, поэтому то, что я делаю, - это приложение под названием ImageMagick. В этом приложении с помощью командной строки я передам путь к изображению и папку назначения. Поэтому, когда я запускаю команду в командной строке, она преобразует изображение и сохраняет его в папке назначения.
Что я уже пробовал:
Firstly I tried the php exec() for the below code <pre><pre lang="PHP"><pre><?php echo exec('ipconfig'); ?>
Приведенный выше код дает вывод в браузере
Когда я даю следующий код:
<pre lang="PHP"><pre><?php echo exec('date'); ?>
Он дает выход как показано ниже
Enter the new date: (mm-dd-yy)
Но когда я запускаю команду date в командной строке она дает текущую дату
Я попытался запустить команду Imagemagick в php коде, как показано ниже
<pre lang="PHP"><pre><?php echo exec('convert "C:\bhargav\dev\download.jpg" -resize 384 -dither FloydSteinberg -remap pattern:gray50 "C:\bhargav\dev\con.jpg"'); ?>
Но он не сохраняет никаких изображений в качестве выходных данных, и никакая ошибка не отображается в браузере.
convert "C:\bhargav\dev\download.jpg" -resize 384 -dither FloydSteinberg -remap pattern:gray50 "C:\bhargav\dev\con.jpg"
когда приведенная выше команда дается в командной строке, она дает мне выходные данные.
Где я ошибаюсь?
Richard MacCutchan
- Где я ошибаюсь?"
Короткий ответ: везде.
Более длинный ответ: браузеры специально ограничены в выполнении приложений на клиентских системах по соображениям безопасности. Любая попытка сделать то, что вы пытаетесь, скорее всего, потерпит неудачу.
Kornfeld Eliyahu Peter
Не спасает? - Откуда ты знаешь? вы проверили диск C: сервера? Или вы думали, что PHP работает на клиентской машине?
Dave Kreskowiak
PHP-код работает на сервере, а не на клиенте. Все, что вы запускаете с помощью 'exec' , работает только на сервере.
Теперь, если вы думаете: "но это работает на моей машине!". Да, это потому, что ваша машина является одновременно и сервером, и клиентом! Разверните что-нибудь на рабочем сервере, и все, что вы запускаете с помощью "exec", будет работать только на этом сервере.