Laravel 5 + Homestead + HHVM + PGSQL =未找到驱动程序

时间:2015-06-20 19:07:11

标签: laravel homestead

我的PHP项目使用PGSQL。它在我的开发机器上从Homestead成功运行。一旦我将hhvm: true添加到homestead.yaml中的项目和配置 - 我的网络应用程序就会抛出PDOException找不到驱动程序。当我删除hhvm:true并重新提供宅基地时,例外就消失了。

显然,HHVM的配置不包括PGSQL驱动程序。

我该如何纠正?

1 个答案:

答案 0 :(得分:7)

您没有提供有关您的设置的大量详细信息,因此不清楚您是否安装了Postgres驱动程序。开箱即用不支持Postgres。您必须自己构建和/或安装它。

Facebook有一个"official" list of HHVM extensions。 PGSQL尚未(尚未)集成到HHVM中,但Facebook的页面指向外部GitHub项目,该项目位于:

Postgres Extension for HHVM

以下是项目说明的摘要;您可以在README.md文件中自行阅读。

从源代码构建

如果要从源构建它,则需要安装hhvm-dev和libpq-dev软件包。安装完成后,以下命令将构建扩展:

$ cd /path/to/source
$ hphpize
$ cmake .
$ make

这将生成一个pgsql.so文件,这是一个可动态加载的扩展。将此文件复制到/etc/hhvm/pgsql.so

预建二进制文件

如果你不想构建它,那么在这里的单独的“发布”分支中有一些预先构建的二进制版本用于一些流行的发行版:Releases

再次,将下载的pgsql.so文件复制到/etc/hhvm/pgsql.so

配置

无论是从源代码构建还是安装二进制文件,都需要告诉HHVM在哪里找到它。编辑您的配置文件(通常为/etc/hhvm/php.ini)并添加这些文件(如果它们不存在):

extension_dir = /etc/hhvm
hhvm.extensions[pgsql] = pgsql.so

您可以通过运行

检查一切是否正常
hhvm --php -r 'var_dump(function_exists("pg_connect"));'

如果一切正常,这将输出bool(true)

您可能需要重新启动HHVM才能让服务器选择扩展名。