Я изменил свой policy.xml, чтобы разрешить больший максимальный размер изображения. При запуске скрипта в командной строке:
$ php image.php
64000
Но затем, когда я загружаю его в браузер:
16000
Скрипт просто содержит:
<?php echo Imagick::getResourceLimit(9);
Как я могу применить ту же политику к обслуживаемому сценарию?
Обновлено: ответьте на несколько комментариев:
Таким образом, файл политики - это /etc/ImageMagick-6/policy.xml, расположенный вместе с find /usr /opt / -name policy.xml. Сервер - это nginx, и это капля DigitalOcean, поэтому у меня есть полный контроль.
Я попытался установить лимит ресурсов как до создания экземпляра Imagick, так и после него, оба возвращают один и тот же лимит в 16000.
И запуск файла в командной строке, и в браузере выполнялся только на сервере.
Вот мой скорректированный файл политики, я все увеличил, если какой-либо из них вызывал ограничение. Максимальный размер файла изображения составляет 2 ГБ и примерно 32000 пикселей при разрешении 300 точек на дюйм (это для печати):
<policy domain = "resource" name = "memory" value = "1GB"/>
<policy domain = "resource" name = "map" value = "1GB"/>
<policy domain = "resource" name = "width" value = "64KB"/>
<policy domain = "resource" name = "height" value = "64KB"/>
<policy domain = "resource" name = "area" value = "1GB"/>
<policy domain = "resource" name = "disk" value = "2GB"/>
Где вы редактировали свой policy.xml - в каком каталоге? Если ваш хостинг устанавливает какое-то значение, вы можете сделать его только более строгим, а не менее строгим.
Вы запускали оба на одном компьютере? Или один локально, а другой на сервере?
Я отредактировал свое сообщение, включив в него эти
Любые идеи? @IncredibleHat






В моей версии CLI и Nginx используют разные ini-файлы.
CLI использует /etc/php/{version}/cli/php.ini, а Nginx использует FPM /etc/php/{version}/fpm/php.ini, я предполагаю, что ваша конфигурация аналогична.
Если да, убедитесь, что значения, которые вы хотите сопоставить, соответствуют.
Вы можете легко проверить; создайте файл, содержащий phpinfo();, и проверьте путь к вашему ini-файлу как в интерфейсе командной строки, так и в веб-браузере.
Не могли бы вы добавить здесь изменение policy.xml (не весь файл, а только измененную строку конфигурации). Возможно, вам придется прибегнуть к установке его на лету с помощью setResourceLimit .. Конфигурация между php командной строки и apache php может иногда отличаться.