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

Laravel 5 + Homestead + HHVM + PGSQL = Driver not found

我的 PHP 项目使用 PGSQL。它从 Homestead 在我的开发机器上成功运行。一旦我在 homestead.yaml 中将 hhvm: true 添加到我的项目并提供 - 我的网络应用程序抛出一个 PDOException 并且未找到驱动程序。当我删除 hhvm:true 和 re-provision homestead.

时,异常消失了

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

我该如何纠正?

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

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" 分支中为一些流行的发行版预构建二进制版本: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 才能让服务器获取扩展。