PHP исполняемые команды и экранирование специальных символов - PullRequest
0 голосов
/ 26 июля 2011

Так что я использую execs из командной строки с php для выполнения преобразований Image Magick, и у меня возникла проблема с одной, которая, я уверен, связана с '!' в этом. Иногда я могу захотеть использовать мою библиотеку для изменения размера изображения без сохранения соотношения сторон, и у Image Magick есть команда, которая делает именно это. Вы просто добавляете значения максимальной ширины и высоты с помощью '!' Проблема в том, что я не могу заставить его работать, и он просто полностью игнорирует ограничение по высоте. Я полагаю, потому что '!' нужно сбежать, но я не могу заставить его работать. Может кто-нибудь сказать мне, как я могу заставить эту команду работать:

exec("convert $theFile -resize $max_Xx$max_Y! $theFile", $outputAry);

$ theFile - это путь к изображению, а $ max_X и max_Y - значения ширины и высоты, передаваемые через то, что пользователь устанавливает для них. Без '!' и он изменяет размеры, сохраняя при этом пропорции идеально, но так как он записан там, он игнорирует высоту и изменяет только ширину, сохраняя исходную высоту. Я попытался избежать этого, поставив '\' перед '!' но это не работает У кого-нибудь есть идеи по поводу правильного синтаксиса?

Ответы [ 2 ]

1 голос
/ 26 июля 2011

попробуй -resize {$max_X}x{$max_Y}!
редактировать: вам все еще может потребоваться избежать! используя совет другого ответа

0 голосов
/ 26 июля 2011

Я не помню, чтобы мне приходилось избегать восклицательного знака, но это может вам помочь

http://php.net/manual/en/function.escapeshellcmd.php

...