Почему PHP в Windows не видит расширение php_intl.dll, даже если оно существует?

Я пытаюсь получить внутреннее расширение, работающее на моей тестовой рабочей станции (PHP 5.5.1, Apache 2.2.4, Windows 7 32-bit). Кажется, что независимо от того, что я пытаюсь, я не могу его запустить и запустить.

  • Я раскомментировал строку «extension = php_intl.dll» в моем php.ini.
  • Я проверил, что директива extension_dir указывает на правильный каталог (c: \ wamp \ php5.5 \ ext).
  • Я проверил php_intl.dll в c: \ wamp \ php5.5 \ ext.
  • Я проверял, что все файлы icu * .dll присутствуют в корневом каталоге php (c: \ wamp \ php5.5).
  • Я проверил, что c: \ wamp \ php5.5 находится в моем PATH.
  • И да, копия php.ini, которую я редактирую, является правильной, указанной в директиве PHPIniDir в httpd.conf.

Я проверил журнал ошибок Apache и нашел эту строку каждый раз, когда я перезапустил Apache:

PHP Предупреждение: запуск PHP: невозможно загрузить динамическую библиотеку 'c: \ wamp \ php5.5 \ ext \ php_intl.dll' – указанный модуль не найден. \ R \ n в Unknown в строке 0

Повторяю, но c: \ wamp \ php5.5 \ ext \ php_intl.dll СУЩЕСТВУЕТ!

Я испытываю искушение попробовать указывать на проводник Windows и кричать на свой компьютер: «СМОТРИТЕ, СТИНКИН» ФАЙЛ ПРАВИЛЬНО! » Любая идея, почему я могу видеть файл и PHP, не может, хотя мы, по-видимому, смотрим в один и тот же каталог? Или что-то еще происходит, что я пропустил?

Убедитесь, что Apache может находить и загружать файлы icu * .dll из базового каталога PHP.

Быстрое, простое решение – скопировать эти библиотеки DLL в каталог Apache bin.

Хотя решение SeventyFourLaboratories прост и оно работает, есть решение, которое не требует изменения вашего дистрибутива Apache или PHP (а иногда вам не разрешается изменять их на рабочих серверах).

Вы сказали, что вы проверили C:\wamp\php5.5 в вашей PATH . Windows имеет два вида переменных среды: пользовательские и системные переменные.

Я попытался установить C:\wamp\php5.5 в моей переменной пользователя PATH , и она не работает. Но установка его в системную переменную PATH заставляет ее работать. Итак, вы должны проверить, что вы используете системную переменную PATH для настройки Apache вместо пользовательской переменной с тем же именем.

У меня была такая же проблема, и после почти 5 часов работы над этой проблемой я, наконец, решил ее решить. Мне пришлось сделать два основных изменения.

1) Когда я загрузил расширение, которое я пытался использовать, он пришел со многими другими файлами за пределами файла .dll – большинство из них были .pdb. Я переместил их все в папку ext, содержащую DLL-файлы.

2) Ответ smaines на alaya dot com, представленный в качестве комментария, дал мне второе, что мне нужно было сделать – добавьте путь к папке ext к переменной Windows $ PATH.

Это можно сделать много, вот один из них:

  • Перейти на мой компьютер
  • Щелкните правой кнопкой мыши и выберите свойства
  • Нажмите «Дополнительные системные настройки» слева
  • Нажмите на вкладку «Дополнительно» наверху.
  • Нажмите кнопку «Переменные среды»
  • Найдите в списке переменных, чтобы найти переменную «Путь», выберите ее
  • Нажмите кнопку «Изменить …» (когда выбрана переменная «Путь»)
  • Это вызовет еще одно диалоговое окно с двумя полями ввода. Нижняя – это переменная, выберите ее.
  • Добавляем к концу точку с запятой, затем путь, в этом случае вы должны набрать '; C: \ wamp \ php5.5 \ ext' (точка с запятой – это просто отделить ее от предыдущего пути
  • нажмите «ОК» во всех диалоговых окнах, которые появились, чтобы закрыть их

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

Надеюсь, это поможет, это сработало для меня. Похоже, что это довольно распространенная проблема – по крайней мере, я нашел немало дискуссий по этому вопросу и ее вариаций.

Это сводило меня с ума. У меня были все icu-dll на моем пути и т. Д. В конце установка Visual C ++ 2015 x86 решила его для меня.

полное исправление будет состоять в том, чтобы изменить C: \ wamp \ scripts \ config.inc.php следующим образом:

Найти этот раздел этого файла

 $phpDllToCopy = array ( 'fdftk.dll', 'fribidi.dll', 'libeay32.dll', 'libmhash.dll', 'libmysql.dll', 'msql.dll', 'libmysqli.dll', 'ntwdblib.dll', 'php5activescript.dll', 'php5isapi.dll', 'php5nsapi.dll', 'ssleay32.dll', 'yaz.dll', 'libmcrypt.dll', 'php5ts.dll', 'php4ts.dll'); 

И измените его на

 $phpDllToCopy = array ( 'fdftk.dll', 'fribidi.dll', 'icudt51.dll', // - Additions to avoid unknown error PHP 5.5.5 'icuin51.dll', 'icuio51.dll', 'icule51.dll', 'iculx51.dll', 'icutest51.dll', 'icutu51.dll', 'icuuc51.dll', 'icudt50.dll', // - Additions to avoid unknown error PHP 5.5 'icuin50.dll', 'icuio50.dll', 'icule50.dll', 'iculx50.dll', 'icutest50.dll', 'icutu50.dll', 'icuuc50.dll', 'icudt49.dll', // - Additions to avoid unknown error PHP 5.3/5.4 'icuin49.dll', 'icuio49.dll', 'icule49.dll', 'iculx49.dll', 'icutest49.dll', 'icutu49.dll', 'icuuc49.dll', 'libeay32.dll', 'libmhash.dll', 'libmysql.dll', 'libsasl.dll', // - Additions to avoid unknown error 'msql.dll', 'libmysqli.dll', 'ntwdblib.dll', 'php5activescript.dll', 'php5isapi.dll', 'php5nsapi.dll', 'ssleay32.dll', 'yaz.dll', 'libmcrypt.dll', 'php5ts.dll', 'php4ts.dll', ); 

Как добавить расположение PHP.exe в PATH.

(Графический интерфейс Windows 7)

Для доступа администратора к «Переменные среды: системные переменные» следуйте инструкциям здесь: https://kb.wisc.edu/cae/page.php?id=24500

В «Переменные среды: системные переменные» отредактируйте переменную «Путь» и префикс существующей строки (НЕ УДАЛЯЙТЕ ЭТО) с вашим местоположением. например: C: \ wamp \ bin \ php \ php5.5.12;

  • Работал для меня.

Исправление к сообщениям выше

Если вы добавляете папку php в PATH, обязательно добавьте папку php, а не папку php / ext.

В моем случае это был C: \ wamp \ bin \ php \ php5.5.12, а не C: \ wamp \ bin \ php \ php5.5.12 \ ext.