PHP 5.2.8 отказывается загружать php_pgsql.dll
со следующей ошибкой:
Внимание: запуск PHP: невозможно загрузить динамическую библиотеку «D: \ PHP \ ext \ php_pgsql.dll» – указанный модуль не найден.
- Проблемы с PHP при передаче кода из Windows в OS X
- Синтаксис PHP для массивов: различное поведение между версиями PHP
- Проверка MediaWiki с учетными данными домена Windows
- Как запустить php в интерактивной CLI в Windows
- Можете ли вы получить имя пользователя Windows (AD) в PHP?
в Unknown в строке 0
DLL существует в PHP / ext /.
У кого-нибудь еще была эта проблема с PHP на Windows раньше?
Ознакомьтесь с информацией на странице установки 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 на одном сервере для производственных сред не рекомендуется.
Это мгновенно установило мою установку.
Это случилось и с 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"
После этого все получилось отлично.
Проблема связана с соответствующими библиотеками, используемыми php_pgsql.dll – как libpq.dll, OpenSLL и т. Д. Вам нужно найти их (из дистрибутива почтового индекса Postgres, из установленного драйвера psqlODBC и т. Д.) И поместить их в папку который находится в PATH. Что касается списка всех DLL – используйте MS Dependency Walker (зависит .exe).
Еще один важный бит – Apache (если вы используете Apache, который есть) имеет свой собственный набор OpenSSL DLL. Замените или просто переименуйте их, чтобы не столкнуться с теми, что были из дистрибутива Postgres.
Для тех, кто хочет сделать свою установку PHP доступной только для доступа к серверам PostGres, без фактической установки PostGres вам необходимо:
Эти 3 библиотеки DLL можно найти в установке PostGres. Я просто скопировал их в apache \ bin, таким образом я сохраняю все самодостаточным. При этом apache может запустить PHP-движок просто отлично, с поддержкой PostGres.
Вам нужно скопировать libpq.dll из wamp \ bin \ php \ php5.3.5 в wamp \ bin \ apache \ Apache2.2.17 \ bin. Снова перезапустите Wamp Server. К настоящему времени мы закончили настройку php. Затем мы установим phpPgAdmin и используем его.
Просто подумайте – убедитесь, что двоичные файлы Postgres находятся в пути SYSTEM, а не в вашем пользовательском пути. Как это случилось, это была проблема на моей машине. 🙂
Редактировать:
Подумайте об этом, это объясняет, почему Dependency Walker сообщит обо всех A-OK, но проблема все равно сохранится – вы запускаете DW под своей собственной учетной записью, в то время как Apache работает как SYSTEM, и, следовательно, не будет иметь ваших личных настроек PATH ,
В частности, для настроек сервера 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 \.
Как сказал Ондржей Буда: «Настройка переменных среды Windows достаточно. Никаких копий dll, никаких записей в http-conf. Просто добавьте PHP-каталог (C: \ xampp \ php) в PATH. Не забудьте перезапустить XAMPP-Control-Panel, если вы используете это, иначе он не будет знать об изменениях. (И перезапустите Apache из-за причины.)
Например, на XAMPP было достаточно поместить каталог PHP (т. Е. C: \ xampp \ php) в переменную системы PATH. – Ондржей Буда
Просто чтобы поделиться тем, что сработало для меня, не имея дело с 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 успешно и работает.
Единственный раз, когда я видел эту ошибку (и имя файла и путь ext были определенно правильными), когда я пытался использовать неправильную версию DLL, т.е. Я использовал тот, который был скомпилирован против другой версии PHP, к той, которую я запускал.
Убедитесь, что ваша версия определенно скомпилирована против PHP 5.2.8.
Изменить: или, права на файл были установлены неправильно.
LIBPQ.DLL проблема с php на Vista …
Убедитесь, что у вас действительно установлены postgres. Если вы устанавливаете php на windows с API postgres, без установки postgres, вы можете получить это предупреждение. Слишком просто просто щелкнуть все в установщике Windows …
Прокомментируйте соответствующую строку в php.ini.
Я получил решение:
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 "Полный путь к /php5gs.dll" LoadFile "полный путь к libpg.dll"
Надеюсь, это будет полезно.
Вы должны добавить следующие строки в файл httpd.conf:
PHPIniDir "c:/PHP/" Loadfile "C:\php\php5ts.dll" Loadfile "C:\php\libpq.dll" LoadModule php5_module "c:/PHP/php5apache2_2.dll"
Это обновление ответа @Dayron Armas Peña. Php, связанный с pgsql 'dll', находится в следующем месте:
LoadFile "C:/wamp/bin/php/php5.4.12/libpq.dll"
Добавление вышеуказанной строки в файл httpd.conf
кроме раскола необходимых строк в файлах php.ini
, решило мою проблему.
Я просто сделал это, и он отлично работал в папке php внутри php.ini. Я изменил эту строку
extension=php_openssl.dll
в
extension=C:\php\ext\php_openssl.dll
php_openssl.dll
находится внутри папки ext
которая не может быть найдена.
Скопируйте файл libpq.dll из местоположения / bin / php / в папку / bin / apache // bin. Перезапустите сервер Wamp.
Я нашел, что это работает для меня:
После установки PostgreSQL вам нужно скопировать libpq.dll
из libpq.dll
wamp\bin\php\phpX.XX
в wamp\bin\php\phpX.XX
wamp\bin\apache\Apache2.2*\bin
. И перезапустите Wampserver.