#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. Для него уже задан абсолютный путь (я обновил вопрос)