PHP не загружает php_pgsql.dll в Windows - PullRequest
33 голосов
/ 16 февраля 2009

PHP 5.2.8 отказывается загружать php_pgsql.dll со следующей ошибкой:

Предупреждение. Запуск PHP: невозможно загрузить динамическую библиотеку «D: \ PHP \ ext \ php_pgsql.dll» - указанный модуль не найден.

в Неизвестно в строке 0

.dll существует в PHP / ext /.

Кто-нибудь еще имел эту проблему с PHP на Windows раньше?

Ответы [ 17 ]

80 голосов
/ 08 октября 2009

Проверьте информацию на странице установки PHP PostgreSQL: http://us.php.net/manual/en/pgsql.installation.php

На сервере Windows, настроенном с Apache, добавление следующей строки в httpd.conf для загрузки libpq.dll может сэкономить вам много времени:

LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll"

Обратите внимание, что вам придется изменить папку в соответствии с путем установки и версией PostgreSQL, которую вы установили. Также обратите внимание, что использование Apache и PostgreSQL на одном сервере для производственных сред не рекомендуется.

Это сразу исправило мои настройки.

46 голосов
/ 04 мая 2012

Это случилось со мной также с PHP 5.4.1

Копирование поврежденной DLL везде не работало, и у меня не установлен PostgreSQL на сервере, но я также планировал использовать PHP для разных версий Postgres, поэтому единственное найденное мной решение заключалось в том, чтобы вставить httpd. конфиг такую ​​строку:

LoadFile "C:/Program Files/PostgreSQL/8.4/bin/libpq.dll"

Но, ссылаясь на libpq.dll, который поставляется в комплекте с PHP, вот так:

LoadFile "C:/php/libpq.dll"

После этого он работал нормально для меня.

4 голосов
/ 26 февраля 2013

Вам нужно скопировать libpq.dll из wamp \ bin \ php \ php5.3.5 в wamp \ bin \ apache \ Apache2.2.17 \ bin. Снова перезапустите Wamp-сервер. К настоящему времени мы закончили с настройкой php. Далее мы установим phpPgAdmin и используем его.

4 голосов
/ 16 февраля 2009

Проблема связана со связанными библиотеками, используемыми php_pgsql.dll - такими как libpq.dll, OpenSLL и т. Д. Вам необходимо найти их (из zip-дистрибутива Postgres, из установленного драйвера psqlODBC и т. Д.) И поместить их в папке, которая находится в ПУТИ. Что касается списка всех DLL-библиотек - используйте MS Dependency Walker (зависимость.exe).

Еще один важный бит - Apache (если вы используете Apache) имеет свой собственный набор библиотек DLL OpenSSL. Замените или просто переименуйте их, чтобы они не конфликтовали с теми из дистрибутива Postgres.

4 голосов
/ 14 февраля 2012

Для тех, кто желает, чтобы их установка PHP поддерживала только доступ к серверам PostGres, без фактической установки PostGres, вам необходимо:

  • включить расширение php_pgsql.dll (и php_pdo_pgsql.dll, если используется PDO) в PHP.INI,
  • убедитесь, что в пути находятся libpq.dll, libiconv-2.dll и libintl-8.dll. Это зависимости php_pgsql.dll.

Эти 3 DLL можно найти в установке PostGres. Я просто скопировал их в apache \ bin, таким образом я храню все самодостаточным. Делая это, apache может нормально запустить движок PHP с поддержкой PostGres.

2 голосов
/ 28 июля 2009

Просто мысль - убедитесь, что двоичные файлы Postgres находятся в пути SYSTEM, а не в вашем пути пользователя. Как это случилось, это была проблема на моей машине. : -)

Edit:

Если подумать, это объясняет, почему Dependency Walker будет сообщать обо всех проблемах, но проблема все равно будет сохраняться - вы запускаете DW под своей собственной учетной записью, а Apache работает как SYSTEM и, следовательно, не будет иметь ваших личных Доступные настройки PATH.

2 голосов
/ 20 июля 2017

Просто чтобы поделиться тем, что сработало для меня, не имея дело с libpq.dll. Я раскомментировал extension=php_pdo_pgsql.dll и extension=php_pgsql.dll в php.ini. Сначала apache отказался запускаться.

Затем я добавляю "C:\Program Files (x86)\PostgreSQL\9.4\bin\" (в зависимости от вашей установки) в среду Windows PATH, успешно запустил apache и работает.

1 голос
/ 02 августа 2013

Как отметил Ондржей Буда: Настройка переменных среды Windows достаточно. Нет копий DLL, нет записей в http-conf. Просто добавьте php-каталог (C: \ xampp \ php) в PATH. Не забудьте перезапустить XAMPP-Control-Panel, если вы используете это, иначе он не будет знать об изменениях. (И перезапустите Apache причины.)

Например, на XAMPP было достаточно поместить каталог PHP (т. е. C: \ xampp \ php) в системную переменную PATH. - Ондржей Буда

1 голос
/ 01 ноября 2011

Специально для настроек сервера WAMP здесь вам необходимо скопировать файл libpg.dll в «C: \ wamp \ bin \ apache \ Apache2.2.21 \ bin \» или аналогичный. Скопировать его в .. \ php \ ext \, а также настроить переменную PATH env просто было недостаточно (если вообще работало).

Исходный ответ здесь: http://www.wampserver.com/phorum/read.php?2,40270,57932

Специально для установок XAMPP я обнаружил, что мне нужно только скопировать файл libpg.dll в каталог .. \ php \ ext \.

0 голосов
/ 13 сентября 2015

Скопируйте файл libpq.dll из папки / bin / php / в location / bin / apache // bin. Перезагрузите сервер wamp.

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