Intereting Posts

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 раньше?

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

  • включите 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.

Вам нужно скопировать 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" 

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

Это обновление ответа @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.