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

Jas*_*enX 14 laravel homestead

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

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

我该如何纠正?

Dar*_*ryl 7

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

Facebook有一个HHVM扩展"官方"列表.PGSQL尚未(尚未)集成到HHVM中,但Facebook的页面指向外部GitHub项目,该项目位于:

适用于HHVM的Postgres扩展

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

从源头构建

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

$ cd /path/to/source
$ hphpize
$ cmake .
$ make
Run Code Online (Sandbox Code Playgroud)

这将生成一个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
Run Code Online (Sandbox Code Playgroud)

您可以通过运行检查一切是否正常

hhvm --php -r 'var_dump(function_exists("pg_connect"));'
Run Code Online (Sandbox Code Playgroud)

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

您可能需要重新启动HHVM才能让服务器获取扩展.