Расширения PHP не будут загружаться при запуске Apache - PullRequest
9 голосов
/ 17 мая 2009

Я добавил php в качестве модуля для Apache 2.2.11:

LoadModule php5_module "c:/php/php5apache2_2.dll"

А также добавил

AddType application/x-httpd-php .php

А в PHP.ini мое расширение dir установлено на: extension_dir = "C:\php\ext"

И да , каталоги верны и все файлы существуют.

Но когда я запускаю apache, я получаю следующие ошибки:

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'C: \ php \ ext \ php_mysql.dll' - Указанный модуль не найден. \ R \ n в Неизвестно в строке 0
Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'C: \ php \ ext \ php_pdo_pgsql.dll' - Указанный модуль не найден. \ R \ n в Неизвестно в строке 0
Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'C: \ php \ ext \ php_pgsql.dll' - Указанный модуль не найден. \ R \ n в Неизвестно в строке 0

[Sun May 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' - Указанный модуль не найден. \ R \ n в Неизвестно в строке 0
Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'C: \ php \ ext \ php_pdo_pgsql.dll' - Указанный модуль не найден. \ R \ n в Неизвестно в строке 0
Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'C: \ php \ ext \ php_pgsql.dll' - Указанный модуль не найден. \ R \ n в Неизвестно в строке 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.

Так что я, наверное, здесь забываю что-то простое, может кто-нибудь сказать мне, что я забываю?

Ответы [ 11 ]

7 голосов
/ 17 мая 2009

Вам нужны не только библиотеки расширений PHP, чтобы добавить поддержку MySQL и PostgreSQL в PHP. Вам также нужны собственные библиотеки MySQL и PostgreSQL. DLL-библиотеки расширений PHP, вероятно, не находят некоторые библиотеки DLL, от которых они зависят, поэтому они не могут запуститься.

Убедитесь, что у вас установлены клиентские приложения MySQL и PostgreSQL и их библиотеки DLL в каком-либо доступном месте.

т.е. Пример:

  • php_mysql.dll зависит от libmysql.dll

Итак, убедитесь, что PHP может найти libmysql.dll (я полагаю, что это идет с бинарным дистрибутивом Windows PHP. Хотя не уверен).

2 голосов
/ 18 мая 2009

Добавить к совету Пабло Санта-Круса. В Windows вы можете включить необходимые библиотеки в среду PATH. (Не обязательно копировать в папку Windows). При загрузке библиотек вдовы также ищут в каталогах PATH.

Если вы используете стандартный бинарный дистрибутив Win32 из php.net для PHP5.2, то пакет должен содержать все зависимости в корне пакетов. Итак, если вы установили PHP5.2 в C:\php, добавьте этот каталог в PATH envar. Перезапустите Apache, и я ожидаю, что расширения будут загружаться правильно.

1 голос
/ 30 июня 2011

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

  • добавить postgres DLL в apache lib dir
  • добавить postgres путь к системному PATH
  • добавить postgres DLL в system32

Я верю, что просто ПУТЬ сработал бы, но здесь нет времени на чистоту, так что пошли

1 голос
/ 02 ноября 2010

У меня была такая же проблема. Я получал одну из тех раздражающих ошибок всплывающих окон Windows каждый раз, когда пытался войти в phpmyadmin. Я набрал имя пользователя и пароль, а затем выдал ошибку.

Что решило это для меня, так это скопировать libmysql.dl в каталог apache bin. Странно то, что расширения включены правильно, но все же мне нужно было это сделать.

1 голос
/ 17 мая 2009

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

Так что я, наконец, устал от этого и просто установил Ubuntu Server на виртуальную машину и запустил его в течение нескольких минут. Я не могу сказать, подходит ли вам этот вариант или нет, но если это так, то это определенно избавит вас от многих головных болей в долгосрочной перспективе. Не говоря уже о том, что вы всегда можете перемещать свои виртуальные машины, создавать моментальные снимки и делать все остальное, что нужно для виртуальных машин.

1 голос
/ 17 мая 2009

У меня была проблема с определенной версией PHP для Windows. Проблема была в libmysql. Я нашел опубликованную ошибку на сайте php.net от кого-то, у кого была такая же проблема.

Я использовал предыдущий релиз php, и libmysql работал. Ознакомьтесь с заметками о распространении php, которое вы используете. Я думаю, что после конкретной версии они упоминают новую политику в отношении libmysql.

Из того, что вы упоминаете, php не может найти расширения. Убедитесь, что вы указали путь к php.ini, в котором указано, где находятся расширения, какие расширения существуют и что к папке можно получить доступ (разрешения на чтение).

Если все не удается, попробуйте переместить расширение в windows / system32, чтобы найти реальную проблему.

С уважением,

1 голос
/ 17 мая 2009

Эти расширения зависят от собственных библиотек, предоставляемых двоичными дистрибутивами MySQL и PostgreSQL. Установите их и поместите библиотеки, например, в папку apache bin. Это LIBMYSQL.DLL и LIBPQ.DLL соответственно.

Я обычно делаю это вместо того, чтобы загрязнять папку Windows/System32 ими, потому что в моей системе только apache / php является клиентом этих баз данных, а также делает мою настройку apache / php более переносимой.

0 голосов
/ 13 июня 2010

У меня тоже была эта проблема, и я скопировал соответствующий файл (.dll) в systen 32, и он все равно не работал Я использую Windows 7 64bit. Чтобы заставить это работать для меня, я должен был также скопировать libmysql.dll в каталог ext. Сообщение об ошибке покидает журнал Apache и страница загружена с благоприятным ответом (соединение установлено).

0 голосов
/ 08 июня 2010

У меня тоже была такая же проблема, и я решил добавить путь бина "PostgreSQL" в переменные системного окружения

ПУТЬ: C: \ Program Files \ PostgreSQL \ 8.4 \ bin Вы также можете проверить в phpinfo ().

Когда я устанавливаю PostgreSQL, установка в System Path пропущена. Я добавил вручную и перезапустил систему.

0 голосов
/ 14 апреля 2010

У меня была такая же проблема, и я попытался скопировать libmySQL.dll в папку apache bin, и это решило проблему (я устанавливаю PHP 5.2.5 x64). Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...