12

我正在尝试使用以下命令运行 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 驱动程序

phpinfo() 结果

谁能帮我解决这个问题?

4

4 回答 4

7

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

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

于 2017-07-13T08:53:43.607 回答
3

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

我通过应用与此主题相同的补丁来修复它: 每当 PHP 在 Fedora 20 中启动时,pdo_odbc.so 中的 pdo_parse_params 错误

简而言之:如果模块已经由/etc/php/7.2/mods-available/<module>.ini(或您的操作系统的等效路径)加载,则不应在 php.ini 文件中取消注释(=激活)该模块。(其中两个,cli 和服务器)。

您可以通过检查 phpinfo() 来确保这一点,并观察 pdo_pgsql 是如何在其中仍然处于活动状态的,尽管该行在 php.ini 中被注释了!

于 2018-09-10T02:24:16.090 回答
1

我有一个类似的问题(在安装 PHP pg 驱动程序之后)我不得不将两个文件添加到 /etc/php.d

20-pgsql.ini

extension=pgsql.so

30-pdo-pgsql.ini

extension=pdo_pgsql.so

将这些扩展配置行放在 php.ini 中不断给我 pdo_parse_params 错误

于 2019-01-29T23:29:10.117 回答
1

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

即使我已经在我的 Ubuntu 上使用它安装了 postgresql,似乎也没有安装它

sudo apt-get install postgresql-12 

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

sudo apt-get install php-pgsql
于 2021-06-05T20:47:25.077 回答