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 включен
Может ли кто-нибудь помочь мне в этом?
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