pdo与mysql一起工作正常,但是pgsql给出错误'PDOException' with message 'could not find driver'
我已经安装了php5-pgsql
包,其中还包含pdo_pgsql
http://packages.debian.org/sid/php5-pgsql
该软件包直接从PHP脚本提供PostgreSQL数据库连接模块。它还包括用于PHP数据对象扩展的pdo_pgsql模块。
我的dsn是pgsql:dbname=DB;host=192.168.0.2
我正在使用Ubuntu 10.04
答案 0 :(得分:18)
1)您是否在php.ini
(extension=pgsql.so
)中启用了pgsql.so?
2)你在192.168.0.2
界面上看Postgresql吗? (您可以通过netstat -tpln
)
3)如何验证您对Postgresql的访问权限?
答案 1 :(得分:7)
此解决方案适合我: 刚
[sudo] apt-get install php-pgsql
之后,取消注释pgsql
pdo-pgsql
和php.ini
次扩展
最后:
[sudo] /etc/init.d/apache2 restart
如果你使用像我这样的apache ......
答案 2 :(得分:6)
确保您已在主extension=pgsql.so
文件中取消注释告诉php Postgres驱动程序所在位置的行(通常为php.ini
)。
答案 3 :(得分:4)
我有同样的问题。首先 - 检查它是否在php.ini中启用。取消注释extension=php_pdo_pgsql...
设置扩展目录!!
extension_dir = "ext" ; for your case it could be other dir.
并且在更改配置后不要忘记重新启动服务器。
答案 4 :(得分:0)
以下是我为解决问题所做的工作。
修改php.ini
并从;
移除extension=pdo_pgsql
。另外,将extension=pgsql.so
添加到php.ini
文件中。
确保在尝试查看结果之前重新启动Apache服务器。
答案 5 :(得分:0)
答案 6 :(得分:0)
当您没有在与Apache和PHP相同的机器上安装postgresql时;您必须在Linux(in Windows yes)的php-pgsql
中手动安装php.ini
,并且不必添加扩展,因为会产生冗余并且这不起作用(在error.log
中签入)。
$ sudo apt install php-pgsql
然后,您可以在以下位置检查是否存在自动启用的扩展程序:
$ sudo nano /etc/php/7.0/apache2/conf.d/10-pdo.ini
观察:在phpinfo()
中,您将找到目录conf.d/
和文件error.log
GL
答案 7 :(得分:0)
我在另一个解决方案上也遇到了同样的问题。我花了大约4个小时来解决这个问题。请检查以下内容以解决此问题。
检查php.ini
文件并从此行中删除分号
extension=pgsql
extension=pdo_pgsql
重新启动apache2服务器
sudo service apache2 restart
检查您的PDO驱动程序是否已在本地主机phpinfo()
我做对了所有事情,但仍然有这个问题。你知道为什么吗?因为我安装了多个版本的php。因此,我在php cli中运行php7.4
,但是localhost在php7.2
上运行。因此,请务必检查您的php版本。
答案 8 :(得分:0)
只需运行 php --ini 并在输出中查找加载的配置文件以查找 CLI 使用的 php.ini 的位置
然后检查您是否正确启用了扩展。
答案 9 :(得分:-3)
将libpq.dll从PHP目录复制到Apache24 \ bin (或安装的任何地方)。