Расширение Imagick PHP 5.4 не работает с относительными путями. (окна)


Я пытаюсь установить PHP-расширение imagick в 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 ':Нет такого файла или каталога @ошибка/blob.c/openblob/2614' в D:\Web\i\index.php:3 Трассировка стека: #0 D:\Web\i\index.php (3): Imagick->__построить('a.jpg ') #1 {основной} брошен в D:\Web\i\index.php в строке 3

Но когда я использую абсолютный путь $im = new imagick('D:\web\i\a.jpg');, он работает.

Я узнал, что Imagick использует Apache core dir в качестве ссылки. Я сохранил изображение без пути:

$ im->Запись изображения( 'this-is-what-im-looking-for.jpg' );

И я нашел его в C:\Program Файлы (x86)\Apache24\this-is-what-im-looking-for.jpg

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

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

Заранее благодарю Вас

Author: filip.karas, 2012-03-31

1 answers

Похоже, вы, возможно, обнаружили ошибку.

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

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

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

$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg');
 10
Author: GordonM, 2012-03-31 15:07:10