【发布时间】:2016-10-27 06:33:52
【问题描述】:
我正在使用 heroku local 在本地尝试在 PHP 中进行开发,然后再推送到 heroku。
但是,由于缺少 PDO 驱动程序,我无法在本地使用 Postgres:
- 收到
'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 服务器。
一旦理解,问题就变成了通过在本地系统上安装 pdo_pgsql 来解决它,按照 Shyam Bhimani 的解决方案。
【问题讨论】:
-
你试过了吗? sitepoint.com/hosted-postgresql-with-heroku 或者你可以在本地做,如果你能告诉我你使用的是哪个操作系统,我可以帮助你。
-
@ShyamBhimani 我能够为托管在 heroku 上的 heroku 应用程序配置一个数据库。我还能够在本地开发环境(Mac OS X)上创建数据库。问题是如何在本地为 heroku 安装 pdo_pgsql?
标签: php postgresql heroku pdo