bhargavvenkatesh Ответов: 1

Как это сделать 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", будет работать только на этом сервере.

1 Ответов

Рейтинг:
1

Chad3F

Любые ошибки, скорее всего, будут иметь место. stderr, нет stdout. Я подозреваю php exec() захватывает только stdout содержимое (по умолчанию, если не указано иное). Вам нужно посмотреть на журнал ошибок сервера, а не браузера, чтобы увидеть сообщения об ошибках от программ exec()'d.