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

时间:2017-07-13 08:47:53

标签: php pdo php-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:无法打开共享对象   file:第0行的Unknown中没有这样的文件或目录

     

[Doctrine \ DBAL \ Exception \ DriverException]   驱动程序中发生异常:找不到驱动程序
                                                                                               [Doctrine \ DBAL \ Driver \ PDOException]找不到驱动程序

     

[PDOException]找不到驱动程序

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

phpinfo() result

任何人都可以帮我这个吗?

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

简而言之:如果statistics(或您的操作系统的等效路径)已经加载了模块,则不应在php.ini文件中取消注释该模块(=使它处于活动状态)。 (其中两个,cli和server)。

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

答案 2 :(得分:0)

我遇到了类似的问题,并且(在安装PHP pg驱动程序之后)我不得不向/etc/php.d添加两个文件。

20-pgsql.ini

extension=pgsql.so

30-pdo-pgsql.ini

extension=pdo_pgsql.so

将这些扩展配置行放在php.ini中,一直给我pdo_parse_params错误

答案 3 :(得分:0)

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

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

sudo apt-get install postgresql-12 

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

sudo apt-get install php-pgsql