Подтвердить что ты не робот

PHP не загружает php_pgsql.dll в Windows

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

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

в Unknown в строке 0

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

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

4b9b3361

Ответ 1

Ознакомьтесь с информацией на странице установки 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 на одном сервере для производственных сред не рекомендуется.

Это мгновенно установило мою настройку.

Ответ 2

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

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

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

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

LoadFile "C:/php/libpq.dll"

После этого все получилось хорошо.

Ответ 3

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

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

Ответ 4

Для тех, кто хочет сделать свою установку 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.

Ответ 5

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

Ответ 6

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

Edit:

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

Ответ 7

В частности, для настроек сервера WAMP здесь необходимо скопировать файл libpg.dll в папку "C:\wamp\bin\apache\Apache2.2.21\bin \" или подобное. Копирование его в. \Php\ext \, а также настройка переменной env PATH просто не хватало (если оно вообще эффективно).

Оригинальный ответ получен здесь: http://www.wampserver.com/phorum/read.php?2,40270,57932

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

Ответ 8

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

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

Ответ 9

Просто чтобы поделиться тем, что сработало для меня, не имея дело с 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 успешно и работает.

Ответ 10

Единственный раз, когда я видел эту ошибку (и имя файла и путь ext определенно корректно), когда я пытался использовать неправильную версию DLL, т.е. Я использовал тот, который был скомпилирован против другой версии PHP для той, в которой я работал.

Убедитесь, что ваша версия, определенно, скомпилирована против PHP 5.2.8.

Изменить: или, права на файл были установлены неправильно.

Ответ 11

Проблема LIBPQ.DLL с php на Vista...

  • Убедитесь, что у вас действительно установлены postgres. Если вы устанавливаете php на windows с API postgres, без установки postgres, вы можете получить это предупреждение. Слишком просто просто щелкнуть все в установщике Windows...

  • Прокомментируйте соответствующую строку в php.ini.

Ответ 12

Я получил решение:

1) Если вы хотите загрузить расширение php_pdo_pgsql, загрузите также php_pdo. (в php.ini)

2) php_pgsql.dll и php_pdo_pgsql.dll зависят от libpq.dll и php5ts.dll. libpg.dll - это библиотека из postgreSQL, но она была добавлена ​​в двоичный пакет PHP.  При настройке PHP на работу в качестве модуля с Apache он не может правильно загружать зависимую библиотеку. И поэтому вам нужно загрузить его в Apache.

config в httpd.conf, и две строки должны быть перед LoadModule php5_module

LoadFile "Полный путь к /php 5gs.dll"  LoadFile "полный путь к libpg.dll"

Надеюсь, что это будет полезно.

Ответ 13

Вам нужно добавить следующие файлы httpd.conf:

PHPIniDir "c:/PHP/"
Loadfile "C:\php\php5ts.dll"

Loadfile "C:\php\libpq.dll"

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

Источник: http://www.php.net/manual/en/pgsql.setup.php

Ответ 14

Это обновление для ответа @Dayron Armas Peña. Php, связанный с pgsql 'dll', находится в следующей папке:

LoadFile "C:/wamp/bin/php/php5.4.12/libpq.dll"

Добавление вышеуказанной строки в файл httpd.conf, кроме раскола необходимых строк в файлах php.ini, решило мою проблему.

Ответ 15

Я просто сделал это, и он работал просто отлично в php-папке внутри php.ini я изменил эту строку

extension=php_openssl.dll 

к

extension=C:\php\ext\php_openssl.dll 

php_openssl.dll находится внутри папки ext, которая не может быть найдена.

Ответ 16

Скопируйте файл libpq.dll из местоположения/bin/php/в location/bin/apache//bin. Перезапустите сервер Wamp.

Ответ 17

Я нашел, что это работает для меня:

После установки PostgreSQL вам нужно скопировать libpq.dll с wamp\bin\php\phpX.X.X на wamp\bin\apache\Apache2.2*\bin. И перезапустите Wampserver.