php_intl.dll не работает при использовании php5apache2_4.dll

#php #windows #apache #intl

#php #Windows #apache #intl

Вопрос:

На 64-разрядной версии Windows 7 я установил:

  • Потокобезопасный Apache 2.4.23 x86 VC11
  • php 5.6.27-Win32-VC11-x86

Apache httpd.conf:

 ...
LoadModule php5_module "D:/devapps/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "D:/devapps/php"
...
  

Все работает нормально, и с помощью phpInfo () я вижу, что загруженный PHP.ini является правильным (PHPIniDir) и включено расширение intl:

PHP.ini

 ...
extension_dir = "D:/devapps/php/ext"
...
extension=php_intl.dll
...
  

Когда я тестирую его с помощью командной строки:

 php.exe -c devappsphp -r "echo '[' . extension_loaded('intl') . ']';"
  

он сообщает, что расширение загружено правильно (вывод: [1]) без предупреждений.

Но если я посмотрю на журналы apache, я увижу следующую ошибку:

Предупреждение PHP: Запуск PHP: Не удается загрузить динамическую библиотеку ‘D:/devapps/php/extphp_intl .dll’ — Не удается найти указанный модуль.rn в неизвестном в строке 0

и через веб-сервер extension_loaded(‘intl’) имеет значение false.

Другое расширение (например, soap или curl) работает нормально.

Можете ли вы мне помочь?

Ответ №1:

Я провел несколько тестов: после копирования icuuc57.dll , icuin57.dll , icuio57.dll в каталоге Apache bin предупреждение PHP исчезло, и расширение intl корректно работало через веб-сервер.

Итак, я решил это лучшим образом, включая D:devappsphp в системной переменной %PATH% (у меня разные версии PHP, поэтому я ее не устанавливал).

Кажется, что apache не может извлечь и загрузить эти DLL, даже если они находятся в том же каталоге php5apache2_4.dll

Ответ №2:

Проверьте значение extension_dir директивы в вашем php.ini.

Если это только ext, попробуйте изменить его на абсолютный путь, например D:/devapps/php/ext (если это правильный путь).

Комментарии:

1. Для него уже задан абсолютный путь (я обновил вопрос)