将php连接到postgres

时间:2014-07-21 00:32:15

标签: php database postgresql connection

我有一个运行PostgreSQL的VM(pgAdmin III具体),我试图使用red bean连接到它但没有成功。它似乎连接,但当我发送一些东西为DB存储我得到一个错误...这是我的代码:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
include 'php/third-party/rb.php';
R::setup('pgsql:host=localhost;dbname=mydb',
        '(DBUser)','(MyPassword)');
$book = R::dispense( 'book' );
$book->title = 'Learn to Program';
$book->rating = 10;
$book['price'] = 29.99;
$id = R::store( $book );
?>

我认为它对代码没有任何意义。这是抛出的错误:

  

&#34;致命错误:未捕获的异常&#39; PDOException&#39;有消息&#39;可以   没有连接到数据库(mydb)。&#39; ...&#34;

2 个答案:

答案 0 :(得分:0)

以下是需要考虑的一些要点:

  1. “代码似乎连接”是什么意思?消息显示“无法连接......”R :: setup和R :: dispense调用不会尝试连接。 R :: store调用尝试连接。这就是你的错误弹出的地方,我想。

  2. 正如@ChrisForrence的评论所问:你是否在与db服务器相同的机器上运行脚本?如果不是,您必须在连接字符串中更改“localhost”。

  3. 您可以使用标准的postgres cli工具(psql)进行连接吗?

  4. 您是否安装了PDO postgresql驱动程序?

  5. 您是否在SELinux环境中运行,并且您的脚本是否由apache进程运行?如果是这样,apache进程的安全上下文是否允许它与postgresql服务器建立连接?

  6. 检查这些问题。

答案 1 :(得分:0)

这看起来有点奇怪:

R::setup('pgsql:host=localhost;dbname=mydb',
    '(DBUser)','(MyPassword)');

尝试删除DBUserMyPassword周围的括号。

如果仍然无法解决问题,那么你的php可能没有安装php5-pgsql。

您可以使用此命令安装它(假设您的服务器是debian风格):

sudo apt-get install php5-pgsql