PHP 启动:无法加载动态库 PGSQL
PHP Startup : Unable to load dynamic library PGSQL
我正在尝试 运行 Symfony 3.x 与 :
- Ubuntu 16.04
- PHP 7.0
- NGinx
我想与我创建的 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
我正在尝试 运行 Symfony 3.x 与 :
- Ubuntu 16.04
- PHP 7.0
- NGinx
我想与我创建的 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