Расширение Imagick PHP 5.4 не работает с относительными путями.(окна) - PullRequest
14 голосов
/ 31 марта 2012

Я пытаюсь установить расширение imagick PHP на 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 («это то, что я ищу»);

И я нашел его в C: \ Program Files (x86) \ Apache24 \ "это то, что я ищу" .jpg

Проблема в том, что все мои старые сценарии написаны с относительными путями, и я хотел бы продолжить их использование.

Не знаю, если проблема в самом imagick или где-то в PHP 5.4.

Заранее спасибо

1 Ответ

10 голосов
/ 31 марта 2012

Звучит так, будто вы обнаружили ошибку.

Я бы предложил сообщить об этом в http://bugs.php.net/report.php

Тем временем вы могли бы обойти это, используя __DIR__ или __FILE__ для построения абсолютного пути.

Например, чтобы использовать каталог скрипта, сделайте следующее:

$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg');
...