PHP Startup: невозможно загрузить динамическую библиотеку PGSQL

Я пытаюсь запустить Symfony 3.x с:

  • Ubuntu 16.04
  • PHP 7.0
  • Nginx

Я хотел бы взаимодействовать с моей базой данных PGSQL, которую я создал, но я получаю эту ошибку:

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib/php/20151012/php_pdo_pgsql.dll' - /usr/lib/php/20151012/php_pdo_pgsql.dll: не удается открыть файл общего объекта: нет такого файла или каталога в Неизвестно в строке 0

[Doctrine \ DBAL \ Exception \ DriverException] Исключительная ситуация в драйвере: не удалось найти драйвер
[Doctrine\DBAL\Driver\PDOException] не удалось найти драйвер

[PDOException] не удалось найти драйвер

Итак, я посмотрел на мой phpinfo() и кажется, что драйвер pgsql включен

phpinfo () результат

Может ли кто-нибудь помочь мне в этом?

6 ответов

Решение

Вы должны правильно установить модуль PostgreSQL и включить его. http://php.net/manual/en/pgsql.installation.php

PS не используйте файлы.dll на серверах с ОС UNIX, потому что эти расширения скомпилированы для операционной системы Windows (для ОС UNIX вы должны использовать файлы.so).

Для меня ни одно из вышеперечисленных решений не помогло. Раскомментирование extension=pgsql в php.ini также не работало само по себе.

Казалось, что postgresql не был установлен, хотя я установил его на своем Ubuntu, используя

      sudo apt-get install postgresql-12 

Наконец я понял, что нужно установить:

      sudo apt-get install php-pgsql

У меня была очень похожая проблема:

Я исправил это, применив тот же патч, что и для этой темы: ошибка pdo_parse_params в pdo_odbc.so всякий раз, когда PHP запускается в Fedora 20

В двух словах: если модуль уже был загружен /etc/php/7.2/mods-available/<module>.ini (или эквивалентный путь для вашей ОС), тогда модуль не должен быть закомментирован (= сделан активным) в файлах php.ini. (два из них, cli и server).

Вы можете убедиться в этом, проверив phpinfo() и заметив, что pdo_pgsql по-прежнему там активен, несмотря на то, что строка закомментирована в php.ini!

У меня была похожая проблема, и (после установки драйвера PHP pg) мне пришлось добавить два файла в /etc/php.d

20-pgsql.ini

extension=pgsql.so

30-PDO-pgsql.ini

extension=pdo_pgsql.so

Помещение этих строк конфигурации расширений в php.ini продолжало давать мне ошибку pdo_parse_params

Единственное решение, которое, казалось, сработало для меня, состояло в том, чтобы закомментироватьextension=pdo_pgsqlиextension=pgsqlвнутри/etc/php8.1/cli/php.iniдобавлением;перед ними:

      ;extension=pdo_pgsql
;extension=pgsql

Это для PHP версии 8.1

закомментируйте Extension=pdo_pgsql и Extension=pgsql внутри /etc/php8.1/cli/php.ini, добавив ; перед ними:

  • ;расширение=pdo_pgsql
  • ;расширение=pgsql
Другие вопросы по тегам