как включить драйвер php pdo для Postgres в Ubuntu 18.04 - PullRequest
0 голосов
/ 31 мая 2019

Я установил php 7.2 и php 7.3 в Ubuntu 18.04 и создал файл php для входа в систему и вставки данных в базу данных Postgres.Мой скрипт ответил: «Не удалось найти драйвер».

Исследователи выяснили, что мне нужно отредактировать файлы php.ini и включить расширения для Postgres и PDO.Ниже приведены все строки extension = в файлах php.ini.Самые близкие я могу найти строки pdo, показанные ниже.

extension=pdo_pgsql
extension=pgsql

Поэтому я отредактировал файлы php.ini и удалил точки с запятой из каждой из этих строк, чтобы включить их.Затем я перезапустил Apache2:

sudo systemctl restart apache2

Но я все еще получаю "не могу найти драйвер".

Это полный список расширений из файлов php.ini.Какие другие расширения мне нужно включить, чтобы разрешить доступ PDO к Postgres?

php.ini 7.3

;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
extension=pdo_pgsql
;extension=pdo_sqlite
extension=pgsql
;extension=shmop

php.ini 7.2

;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
extension=pdo_pgsql
;extension=pdo_sqlite
extension=pgsql
;extension=shmop

Это скрипт входа в систему php (учетные данные для входа заменяются фиктивными значениямиздесь, потому что я не могу их раскрыть):

<?php

$params = [
    'host' => '[IP Address]',
    'user' => '[username]',
    'pwd' => '[password]',
    'db' => '[dbname]'
];

$dsn = sprintf('pgsql:host=%s;dbname=%s;user=%s;password=%s',
    $params['host'],
    $params['db'],
    $params['user'],
    $params['pwd']);

try {
    $dsn = sprintf('pgsql:host=%s;dbname=%s;unix_socket=%s',
        $params['host'], $params['db'], $params['sock']);
    $opts = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
    $pdo = new PDO($dsn, $params['user'], $params['pwd'], $opts);
} catch (PDOException $e) {
    echo $e->getMessage();
} catch (Throwable $e) {
    echo $e->getMessage();
}

?>

Затем я отредактировал два файла .ini и добавил «.so» в конце каждой из двух строк и перезапустил Apache2, но я все еще получаюто же самое сообщение об ошибке.

Спасибо за любые идеи.

1 Ответ

1 голос
/ 31 мая 2019

Я думаю, что вам не хватает библиотеки php-pgsql, выполните следующие команды, и она должна начать работать (сохраните изменения для файлов php.ini):

sudo apt install php-pgsql
sudo service apache2 reload

У меня нет UbuntuЭто означает, что имена библиотек могут быть разными.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...