PHP 启动:无法加载动态库 PGSQL

PHP Startup : Unable to load dynamic library PGSQL

我正在尝试 运行 Symfony 3.x 与 :

我想与我创建的 PGSQL 数据库交互,但出现此错误:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_pdo_pgsql.dll' - /usr/lib/php/20151012/php_pdo_pgsql.dll: cannot open shared object file: No such file or directory in Unknown on line 0

[Doctrine\DBAL\Exception\DriverException] An exception occured in driver: could not find driver
[Doctrine\DBAL\Driver\PDOException] could not find driver

[PDOException] could not find driver

所以我查看了我的 phpinfo(),似乎 pgsql 驱动程序已启用

谁能帮我解决这个问题?

您必须正确安装并启用 PostgreSQL 模块。 http://php.net/manual/en/pgsql.installation.php

P.S。不要在基于 UNIX OS 的服务器上使用 '.dll' 文件,因为这些扩展是为 Windows 操作系统编译的(对于基于 UNIX OS 你必须使用 '.so'文件)。

我有一个非常相似的问题:

我通过应用与此主题相同的补丁修复了它: pdo_parse_params error in pdo_odbc.so whenever PHP starts in Fedora 20

简而言之:如果一个模块已经被 /etc/php/7.2/mods-available/<module>.ini(或您的 OS 的等效路径)加载,则不应在php.ini 个文件。 (其中两个,cli 和服务器)。

您可以通过检查 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 错误

对我来说,上述 none 个解决方案有效。在 php.ini 中取消注释 extension=pgsql 本身也不起作用。

虽然我已经使用

在 Ubuntu 上安装了 postgresql,但似乎没有安装它
sudo apt-get install postgresql-12 

最后,我意识到我必须安装:

sudo apt-get install php-pgsql