Расширения PHP не загружаются при запуске Apache
Вопрос
Я добавил php в качестве модуля для Apache 2.2.11:
LoadModule php5_module "c:/php/php5apache2_2.dll"
А еще добавил
AddType application/x-httpd-php .php
А в PHP.ini для моего расширения установлено значение: extension_dir = "C:\php\ext"
И да, каталоги верны и все файлы существуют.
Но когда я запускаю Apache, я получаю следующие ошибки:
Предупреждение PHP:PHP-запуск:Невозможно загрузить динамическую библиотеку «C:\php\ext\php_mysql.dll» — указанный модуль не найден. в Неизвестно в строке 0
Предупреждение PHP:PHP-запуск:Невозможно загрузить динамическую библиотеку «C:\php\ext\php_pdo_pgsql.dll» — указанный модуль не найден. в Неизвестно в строке 0
Предупреждение PHP:PHP-запуск:Невозможно загрузить динамическую библиотеку «C:\php\ext\php_pgsql.dll» — указанный модуль не найден. в Неизвестно в строке 0
[Вс, 17 мая, 03:46:01 2009] [уведомление] Apache/2.2.11 (Win32) настроен PHP/5.2.9-2 - возобновление нормальной работы
[Вс, 17 мая, 03:46:01 2009] [уведомление] Создан сервер:10 дек 2008 00:10:06
[Вс, 17 мая, 03:46:01 2009] [уведомление] Родитель:Создан дочерний процесс 4652.
Предупреждение PHP:PHP-запуск:Невозможно загрузить динамическую библиотеку «C:\php\ext\php_mysql.dll» — указанный модуль не найден. в Неизвестно в строке 0
Предупреждение PHP:PHP-запуск:Невозможно загрузить динамическую библиотеку «C:\php\ext\php_pdo_pgsql.dll» — указанный модуль не найден. в Неизвестно в строке 0
Предупреждение PHP:PHP-запуск:Невозможно загрузить динамическую библиотеку «C:\php\ext\php_pgsql.dll» — указанный модуль не найден. в Неизвестно в строке 0
[Вс, 17 мая, 03:46:01 2009] [примечание] Ребенок 4652:Дочерний процесс запущен
[Вс, 17 мая, 03:46:01 2009] [примечание] Ребенок 4652:Получен стартовый мьютекс.
[Вс, 17 мая, 03:46:01 2009] [примечание] Ребенок 4652:Запуск 64 рабочих потоков.
[Вс, 17 мая, 03:46:01 2009] [примечание] Ребенок 4652:Запускаем поток для прослушивания порта 80.
Итак, я, вероятно, забыл что-то простое, может кто-нибудь сказать мне, что я забываю?
Решение
Вам нужны не только библиотеки DLL расширения PHP, чтобы добавить поддержку MySQL и PostgreSQL в PHP.Вам также потребуются собственные библиотеки MySQL и PostgreSQL.Библиотеки DLL расширения PHP, вероятно, не находят какую-либо DLL, от которой они зависят, поэтому не могут запуститься.
Убедитесь, что у вас установлены клиенты MySQL и PostgreSQL, а их библиотеки DLL находятся в каком-нибудь доступном месте.
И.Е.пример:
- php_mysql.dll зависит от libmysql.dll
Итак, убедитесь, что PHP может найти libmysql.dll (я полагаю, что он входит в бинарный дистрибутив Windows PHP.Хотя не уверен).
Другие советы
Добавлю к совету Пабло Санта Круза.В Windows вы можете включить необходимые библиотеки в PATH
среда.(Не обязательно копировать в папку Windows).При загрузке библиотек винда заглядывает PATH
каталоги тоже.
Если вы используете стандартный бинарный дистрибутив Win32 от php.net для PHP5.2, то пакет должен содержать все зависимости в корне пакетов.Итак, если вы установили PHP5.2 в C:\php
, добавьте этот каталог в PATH
энвар.Перезапустите Apache, и я ожидаю, что расширения загрузятся правильно.
У меня возникла проблема с определенной версией PHP в Windows.Проблема была в libmysql.Я нашел сообщение об ошибке на сайте php.net от человека, у которого была такая же проблема.
Я использовал предыдущую версию PHP, и libmysql работал.Ознакомьтесь с примечаниями к используемому вами дистрибутиву PHP.Я думаю, что после конкретной версии упоминают новую политику в отношении libmysql.
Судя по тому, что вы упомянули, php не может найти расширения.Убедитесь, что вы указали путь в php.ini, который указывает, где расположены расширения, что расширения существуют и что к папке можно получить доступ (разрешения на чтение).
Если все не удалось, попробуйте переместить расширение в windows/system32, чтобы выяснить, в чем может заключаться реальная проблема.
С уважением,
Эти расширения зависят от собственных библиотек, входящих в двоичные дистрибутивы MySQL и PostgreSQL.Установите их и поместите библиотеки в Apache. bin
папка например.Это LIBMYSQL.DLL
и LIBPQ.DLL
соответственно.
Обычно я делаю это вместо того, чтобы загрязнять окружающую среду. Windows/System32
папка с ними, потому что в моей системе только apache/php является клиентом этих баз данных, а также это делает мою установку apache/php более переносимой.
По моему опыту, PHP в Windows — это серьезная проблема.Обычно в конце концов мне удается заставить его работать, но всегда приходится много гуглить и методом проб и ошибок — по крайней мере, для меня.
В конце концов мне это надоело, и я просто установил Ubuntu Server на виртуальную машину и запустил его за считанные минуты.Я не могу сказать, подойдет ли вам этот вариант или нет, но если да, то в долгосрочной перспективе он определенно избавит вас от многих головных болей.Не говоря уже о том, что вы всегда можете перемещать свои виртуальные машины, создавать снимки и делать все другие интересные вещи, для которых виртуальные машины хороши.
У меня такая же проблема.Я получал одну из этих надоедливых всплывающих окон каждый раз, когда пытался войти в phpmyadmin.Я ввел имя пользователя и пароль, а затем выдал ошибку.
Для меня это решило также копирование libmysql.dl в каталог bin apache.Странно то, что расширения, по-видимому, были включены правильно, но мне все равно нужно было это сделать.
Я попробовал несколько таких решений, и одно или несколько из них сработали...Перезагрузка здесь является ключевым моментом.Я не перезагружался между этими изменениями, но после перезагрузки все заработало:
- добавить Postgres DLL в каталог библиотеки Apache
- добавить путь postgres в системную PATH
- добавить Postgres DLL в system32
Я считаю, что просто PATH сработал бы, но здесь нет времени на чистоту, так что вперед.
проблема здесь в том, что Apache загрузил PHP, но PHP не смог загрузить его расширение (mysql, postgresql,...).Я думаю, вам следует ввести значения пути в файл php.ini в формате unix (не используйте символы обратной косой черты в качестве разделителя каталогов).поэтому в вашем файле php.ini измените это:
Extension_dir="C:/php/ext"
У меня также была такая же проблема, и я решил ее, добавив путь к папке «PostgreSQL» в переменные системной среды.
ПУТЬ:C: Program Files Postgresql 8.4 bin Вы также можете проверить phpinfo ().
Когда я устанавливаю PostgreSQL, настройка системного пути пропущена.Я вручную добавил, а затем перезапустил систему.
У меня тоже была эта проблема, и я скопировал соответствующие файлы (.dll) в систему 32, но у меня все равно не работало.Я использую Windows 7 64bit.Чтобы это заработало, мне также пришлось скопировать libmysql.dll в каталог ext.Сообщение об ошибке покинуло журнал Apache, и страница загрузилась с положительным ответом (соединение установлено).
У меня была та же проблема, я попытался скопировать libmySQL.dll в папку bin apache, и это решило проблему (я устанавливаю PHP 5.2.5 x64).Большое спасибо.