Heroku本地:如何安装Postgres支持

时间:2016-06-24 15:17:32

标签: php postgresql heroku pdo

我正在使用heroku local尝试在本地开发PHP,然后再推送到heroku。

但是,我无法在本地使用Postgres,因为缺少PDO驱动程序:

  • 收到'PDOException' with message 'could not find driver'错误消息
  • 事实上,phpinfo()显示pdo_pgsql未安装。

如何在heroku local上安装(或启用?)PostgreSQL PDO(pdo_pgsql)?

我在官方文档中找不到任何内容,也没有在网上找到任何内容。 (PHP似乎缺乏文档,尤其是如何在本地使用heroku。)

仅供参考,运行Mac OS X.

如果需要,这是我正在进行测试的最小例子:     

/**
 * postgres-helloworld.php
 * Runs fine on XAMPP, which has PHP Version 5.5.15 with pdo_pgsql installed.
 * But won't run on heroku local, which has PHP Version 5.5.34 WITHOUT pdo_pgsql installed.
 *  `PDOException`, `could not find driver'`
 */
$dbh = new PDO( "pgsql:dbname=test;host=localhost", 'fabien', NULL );
$res = $dbh->query(  'SELECT name FROM test_table'  )->fetchAll( PDO::FETCH_ASSOC );
echo $res[0]['name']; // echoes the content of said table, i.e. `hello database` -- OK

?>

编辑:

我意识到我heroku local完全关闭的整个模型。它只是这样做:

  

“Heroku Local从.env文件中读取配置变量。”(来自https://devcenter.heroku.com/articles/heroku-local

错误地认为它在本地提供了heroku在云中提供的相同灵活性(即:dev-prod-parity,例如:能够选择运行哪个PHP版本并在本地重现与云中相同的设置,并且它带有自己的二进制文件。

实际上,heroku local仅仅依赖于系统默认的PHP安装和扩展(或缺少它)来运行Web服务器。

一旦理解,根据Shyam Bhimani的解决方案,问题就是通过在本地系统上安装pdo_pgsql来修复它。

1 个答案:

答案 0 :(得分:0)

试试这个:

$ ./configure --with-pdo-pgsql

使用 - with-pdo-pgsql [= DIR] 来安装PDO PostgreSQL扩展,其中可选的[= DIR]是PostgreSQL基本安装目录,或者是pg_config的路径。

有关详细信息,您可以按照这两个文档(1) (2)

进行操作