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 раньше?
Ответы
Ответ 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.