Расширения PHP не загружаются при запуске Apache

StackOverflow https://stackoverflow.com/questions/873734

  •  22-08-2019
  •  | 
  •  

Вопрос

Я добавил 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).Большое спасибо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top