PostgreSql 'PDOException' с сообщением 'не смог найти драйвер'

pdo отлично работает с mysql, но с pgsql его дает ошибку 'PDOException' with message 'could not find driver' Я установил пакет php5-pgsql, который также включает pdo_pgsql

http://packages.debian.org/sid/php5-pgsql

Этот пакет предоставляет модуль для соединений базы данных PostgreSQL непосредственно из скриптов PHP. Он также включает модуль pdo_pgsql для использования с расширением Object Data Object.

my dsn pgsql:dbname=DB;host=192.168.0.2 Я использую Ubuntu 10.04

Ответ 1

1) Включили ли вы pgsql.so в php.ini (extension=pgsql.so)?

2) Вы используете Postgresql в интерфейсе 192.168.0.2? (Вы можете проверить его на netstat -tpln)

3) Как вы аутентифицируете свой доступ в Postgresql?

Ответ 2

Это решение работает для меня: просто

[sudo] apt-get install php-pgsql

после, раскомментируйте расширения pgsql и pdo-pgsql в etc/php/$PHP_VERSION/apache2/php.ini

enter image description here

Наконец, введите:

[sudo] /etc/init.d/apache2 restart

Чтобы перезапустить сервер Apache, если вы используете Apache, как это было в моем случае...

Ответ 3

Убедитесь, что вы раскомментировали строку, которая сообщает php, где находится драйвер Postgres (обычно extension=pgsql.so) в главном файле php.ini.

Ответ 4

У меня была такая же проблема. Прежде всего - проверка включена в php.ini. Uncomment extension=php_pdo_pgsql...

чем установить каталог расширений!!

extension_dir = "ext" ; for your case it could be other dir.

и не забудьте перезагрузить сервер после изменения конфигурации.

Ответ 5

Вот что я сделал, чтобы решить проблему.

  1. Отредактируйте php.ini и удалите ; из extension=pdo_pgsql. Также добавьте extension=pgsql.so в файл php.ini.

  2. Обязательно перезапустите сервер Apache, прежде чем пытаться увидеть результат.

Ответ 6

Попробуйте удалить точку с запятой перед

расширение = PgSQL
расширение = pgsql.so

включен в ваш файл php.ini

Вы можете сделать это из панели управления XAMPP.

enter image description here

Ответ 7

Если у вас не установлен postgresql на одной машине с Apache и PHP; вам нужно установить php-pgsql и не нужно добавлять расширения в php.ini вручную в Linux (в Windows да), потому что генерируются избыточности, и это не работает (проверено в error.log).

$ sudo apt install php-pgsql

Затем вы можете проверить наличие включенного расширения автоматически в:

$ sudo nano /etc/php/7.0/apache2/conf.d/10-pdo.ini

Наблюдения: в phpinfo() вы найдете каталог conf.d/ и файл error.log

GL

Ответ 8

Скопировать libpq.dll из каталога PHP в Apache24\bin (или где бы вы ни находились)