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
1) 您是否在
php.ini
(extension=pgsql.so
) 中启用了 pgsql.so?
2) 你的 Postgresql 是否在
192.168.0.2
接口上监听? (可以通过netstat -tpln
查看)
3) 如何验证对 Postgresql 的访问?
确保您已取消注释主
extension=pgsql.so
文件中告诉 php Postgres 驱动程序所在位置(通常是 php.ini
)的行。
我也有同样的问题。首先 - 检查它是否在 php.ini 中启用。取消评论
extension=php_pdo_pgsql...
比设置扩展目录!!
extension_dir = "ext" ; for your case it could be other dir.
更改配置后不要忘记重新启动服务器。
这是我为解决问题所做的事情。
编辑
php.ini
并从 ;
中删除 extension=pdo_pgsql
。另外,将 extension=pgsql.so
添加到 php.ini
文件中。 在尝试查看结果之前,请确保重新启动 Apache 服务器。
我在另一个解决方案中遇到了同样的问题。我花了大约 4 个小时来解决这个问题。请检查以下内容来解决此问题。
检查
php.ini
文件并删除此行中的分号
extension=pgsql
extension=pdo_pgsql
重新启动你的apache2服务器
sudo service apache2 restart
检查本地主机中的 PDO 驱动程序是否已更新
phpinfo()
我做了所有正确的事情,但仍然遇到这个问题。你知道为什么吗?因为我安装了几个版本的php。所以我在我的 php cli 中运行
php7.4
,但本地主机在 php7.2
上运行。所以一定要检查你的 php 版本。
当你没有在 Apache 和 PHP 同一台机器上安装 postgresql 时;您必须在 Linux 中手动安装
php-pgsql
并且 不必在 php.ini
中手动添加扩展(在 Windows 中是),因为会生成冗余并且这不起作用(在
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
只需运行 php --ini 并在输出中查找加载的配置文件以获取 CLI 使用的 php.ini 的位置
然后检查您是否已正确启用扩展程序。
使用 Amazon ec2 linux 2(红帽?); Apache 的 PHP 找不到驱动程序,但它在命令行上(psql) 在花费了大量时间检查配置文件后,出于绝望,我重新启动了 ec2 服务器实例,问题就解决了(就像 Windows 一样:),正如 Dogbert 技术支持曾经说过的“闭嘴并重新启动”
将 libpq.dll 从 PHP 目录复制到 Apache24 in(或任何安装位置)。