Расширение Imagick PHP 5.4 не работает с относительными путями. (окна)
Я пытаюсь установить imagick PHP extension на windows. Он работал на PHP 5.2, PHP 5.3, но у меня проблемы с PHP 5.4.
Версия Imagick: ImageMagick-6.7.6-3-Q16-windows-dll. Модуль работает. Я могу видеть imagick в phpinfo().
Проблема заключается в том, что imagick не распознает относительный путь к файлам. Например, если у меня есть простая index.php и a.jpg в той же папке, я не могу использовать $im = new imagick('a.jpg');
, потому что получаю исключение:
Неустранимая ошибка: исключить исключение "ImagickException" с сообщением "неспособное открыть изображение` a.jpg": такого файла или каталога @error/blob.c/OpenBlob/2614 'в D:\Web\i\index. php: 3 Трассировка стека: # 0 D:\Web\i\index.php(3): Imagick → __ construct ('a.jpg') # 1 {main} брошен в D:\Web\i\index.php в строке 3
Но когда я использую абсолютный путь $im = new imagick('D:\web\i\a.jpg');
, он работает.
Я узнал, что Imagick использует базовый каталог Apache в качестве ссылки. Я сохранил изображение без пути:
$im- > writeImage ('this-is-what-im-look-for.jpg');
И я нашел его в C:\Program Files (x86)\Apache24\this-is-what-im-looking-for.jpg
Проблема заключается в том, что все мои старые сценарии написаны с относительными путями, и я хотел бы рассчитывать на их использование.
Я не знаю, если проблема в самом воображении или где-то в PHP 5.4.
Спасибо заранее
Ответы
Ответ 1
Похоже, что вы обнаружили рану.
Я предлагаю сообщить об этом на http://bugs.php.net/report.php
Тем временем вы можете обойти его, используя __DIR__
или __FILE__
, чтобы построить абсолютный путь.
Например, чтобы использовать каталог script, выполните следующие действия:
$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg');