如何使 php 与 postgresql 一起工作?
Posted
技术标签:
【中文标题】如何使 php 与 postgresql 一起工作?【英文标题】:How do I enable php to work with postgresql? 【发布时间】:2012-05-25 07:56:35 【问题描述】:<?php
try
$dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
echo "PDO connection object created";
catch(PDOException $e)
echo $e->getMessage();
?>
我收到错误消息“无法加载驱动程序”
【问题讨论】:
***.com/a/7240866/705198 涵盖了有关 debian linux 衍生产品的问题。 Install pdo for postgres Ubuntu的可能重复 【参考方案1】:你需要为 php 安装 pgsql 模块。 在 debian/ubuntu 中是这样的:
sudo apt-get install php5-pgsql
或者如果安装了包,需要在php.ini中开启de模块
extension=php_pgsql.dll (windows)
extension=php_pgsql.so (linux)
伟大的。
【讨论】:
您好,您知道如何在 Windows 中安装它吗?对不起,我还没有 ubuntu.. 视情况而定。您正在使用 wamp 或类似的东西? 尝试先启用该模块,编辑php.ini并搜索php_pgsql并删除;在行的开头。然后你需要重新加载你的服务。 只是对 php7 这个旧线程的更新,命令是:sudo apt install php7.0-pgsql 正在运行 php 7.0 - 我必须将 "extension=pgsql.so" 添加到 "php.ini" = "打开数据库成功" = :)【参考方案2】:试试这个:
通过删除“;”取消注释 php.ini 中的以下内容
;extension=php_pgsql.dll
使用以下代码连接到 postgresql 数据库服务器:
pg_connect("host=localhost dbname=dbname user=username password=password")
or die("Can't connect to database".pg_last_error());
【讨论】:
我仍然看到PHP Fatal error: Call to undefined function pg_connect()
,虽然我知道我没有评论它。想法?【参考方案3】:
debian/ubuntu 安装
sudo apt-get install php-pgsql
【讨论】:
【参考方案4】: SO:Windows/Linux HTTP Web 服务器:Apache 编程语言:PHP使 PHP 在 Apache 中与 PostgreSQL 一起工作
在 Apache 中,我编辑以下配置文件:C:\xampp\php.ini
我确保以下行未注释:
extension=php_pgsql.dll
extension=php_pdo_pgsql.dll
在尝试与数据库引擎建立新连接之前,最后重新启动 Apache。
另外,我留下了确保连接唯一的代码:
private static $pdo = null;
public static function provideDataBaseInstance()
if (self::$pdo == null)
$dsn = "pgsql:host=" . HOST .
";port=5432;dbname=" . DATABASE .
";user=" . POSTGRESQL_USER .
";password=" . POSTGRESQL_PASSWORD;
try
self::$pdo = new PDO($dsn);
catch (PDOException $exception)
$msg = $exception->getMessage();
echo $msg .
". Do not forget to enable in the web server the database
manager for php and in the database instance authorize the
ip of the server instance if they not in the same
instance.";
return self::$pdo;
GL
【讨论】:
【参考方案5】:我必须在 httpd.conf 中添加这一行(Windows):
LoadFile "C:/Program Files (x86)/PostgreSQL/8.3/bin/libpq.dll"
【讨论】:
哪里可以找到httpd.conf Apache 服务器的内部配置文件。如果您使用 mamp,则 C:\MAMP\bin\apache\conf\httpd.conf【参考方案6】:只需安装数据库驱动:
apt-get install php5-pgsql php5-mysql php5-sqlite ...等等...
要快乐!
【讨论】:
安装新扩展后重新加载 PHP 配置(重新加载 apache/nginx 等)【参考方案7】:我使用 Windows Platform Installer (WPΙ) 在 Windows IIS 上安装了 PHP。 WPΙ 在“Internet 信息服务(IIS)管理器”控制台中创建了一个“PHP 管理器”工具。我正在使用这个工具配置 PHP。
在http://php.net/manual/en/pdo.installation.php 中说:
PDO 和所有主要驱动程序都将 PHP 作为共享扩展提供,只需编辑 php.ini 文件即可激活: extension=php_pdo.dll
所以我使用 PHP 管理器激活了扩展,现在 PDO 工作正常
PHP manager simple 在我的php.ini 中添加了以下两行,你可以手动添加。当然你必须重启网络服务器。
[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll
【讨论】:
我确实通过 WPI 安装了 PHP,我只需在 [ 末尾添加 extension=php_pgsql.dll 到 C:\Program Files\PHP\v7.1\php.ini ExtensionList] 部分【参考方案8】:你需要安装 pdo_pgsql 包
【讨论】:
如何在 Windows 上安装该软件包? 也许是pecl install pdo_pgsql
。不确定【参考方案9】:
我和其他许多剃须者在这方面花费的时间太长了 - 这需要大幅改进。花了几个小时后,我终于将 php_pgsql.dll 从 php 的 ext 目录复制到 Apache24 的根目录(无论你安装它的位置),最后 Apache 能够加载 php/pg 模块和 dll。
【讨论】:
非常感谢,如果我使用的是 xammp,我会把它放在 C:\xampp 文件夹中吗?【参考方案10】:$dbh = new PDO('pgsql:host=localhost;port=5432;dbname=###;user=###;password=##');
对于 PDO 类型的连接取消注释
extension=php_pdo_pgsql.dll
和评论
;extension=php_pgsql.dll
$dbh = pg_connect("host=localhost dbname=### user=### password=####");
对于pgconnect类型的连接注释
;extension=php_pdo_pgsql.dll
并取消注释
extension=php_pgsql.dll
两个连接都应该工作。
【讨论】:
【参考方案11】:在我的例子中,有 2 php.ini,我不得不在两个 php.ini 中取消注释扩展 pdo_pgsql
-
在 php 文件夹中
在 apache 文件夹中
都在 wamp 文件夹中
【讨论】:
以上是关于如何使 php 与 postgresql 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 SQL Server 2012 与 php 一起工作?
如何使 windows 符号链接与 mod_php 一起工作?