После обновления до macOS Big Sur я не могу подключиться к своей базе данных PostgreSQL с помощью MAMP.

Код

Вот код, который выдает ошибку.

try {
  $myPDO = new PDO('pgsql:host=127.0.0.1:5432;dbname=test', 'test', '');
} catch (\Throwable $th) {
  echo var_dump($th);
}

Ошибка

Вот ответ, который я получаю от try/catch.

object(PDOException)#2 (8) {
  ["message":protected]=>
  string(21) "could not find driver"
  ["string":"Exception":private]=>
  string(0) ""
  ["code":protected]=>
  int(0)
  ["file":protected]=>
  string(58) "/Users/test/index.php"
  ["line":protected]=>
  int(8)
  ["trace":"Exception":private]=>
  array(1) {
    [0]=>
    array(6) {
      ["file"]=>
      string(58) "/Users/test/index.php"
      ["line"]=>
      int(8)
      ["function"]=>
      string(11) "__construct"
      ["class"]=>
      string(3) "PDO"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(3) {
        [0]=>
        string(46) "pgsql:host=127.0.0.1:5432;dbname=test"
        [1]=>
        string(13) "test"
        [2]=>
        string(0) ""
      }
    }
  }
  ["previous":"Exception":private]=>
  NULL
  ["errorInfo"]=>
  NULL
}

Версии

Список версий программного обеспечения, которые я использую.

ОС: macOS Big Sur

МАМП: 6,2

PHP: 7.3.21


Обновление – больше контекста

В файле php.ini следующие строки раскомментированы. Это правильный файл php.ini в соответствии с информацией о PHP.

extension_dir = "/Applications/MAMP/bin/php/php7.4.9/lib/php/extensions/no-debug-non-zts-20190902/"
...
extension=pgsql.so
extension=pdo_pgsql.so

person RTSchriner    schedule 26.11.2020    source источник
comment
Это работает? Вам нужно будет проверить, что процесс сервера Postgres работает, однако MAMP делает это.   -  person tadman    schedule 27.11.2020
comment
Да, Postgres работает. Postgres работает локально, отдельно от MAMP.   -  person RTSchriner    schedule 27.11.2020
comment
Возможно, вам нужно переустановить MAMP, чтобы убедиться, что он подключается к нужным драйверам.   -  person tadman    schedule 27.11.2020
comment
Возможно, однако я обновил MAMP (с 5.x до 6.2) после обновления до Big Sur, надеясь, что, возможно, это была моя проблема. Я попробую это, хотя.   -  person RTSchriner    schedule 27.11.2020
comment
Версия PHP также не имеет значения, я пробовал PHP 7.3.21 и 7.4.9. Я получаю ту же ошибку с обеими версиями.   -  person RTSchriner    schedule 01.12.2020
comment
@tadman: я удалил / удалил MAMP и переустановил его, но у меня все еще есть та же проблема.   -  person RTSchriner    schedule 02.12.2020
comment
Тоже с такой же проблемой. Я использую Symfony и запускаю локальный сервер, используя его CLI. Следовательно, я не думаю, что это вызвано стеком MAMP. Сам постгрес работает нормально. Я могу без проблем подключиться к базе данных с помощью Postico.   -  person Niels Mouthaan    schedule 09.12.2020
comment
Я тоже с сервером Symfony   -  person TDawg    schedule 15.12.2020


Ответы (1)


Установка PHP по умолчанию на Big Sur не включает необходимый драйвер PostgreSQL. Я установил PHP 7.4 через Homebrew, который включает этот драйвер:

brew install [email protected]

Убедитесь, что это версия PHP по умолчанию. Я использую Oh My Zsh, поэтому мне нужно запустить это:

echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.zshrc

Вы можете найти php.ini (на случай, если вам нужно перенести конфигурацию) здесь: /usr/local/etc/php/7.4/php.ini

person Niels Mouthaan    schedule 23.12.2020
comment
Круто - спасибо за подсказку! Я попробую это и дам вам знать, как это происходит. - person RTSchriner; 29.12.2020
comment
Спасибо, что сделали для меня. Просто не забудьте source ~/.zshrc, если вы собираетесь сразу же использовать ту же оболочку - person nobody; 20.05.2021