我的PHP项目使用PGSQL。它在我的开发机器上从Homestead成功运行。一旦我将hhvm: true
添加到homestead.yaml中的项目和配置 - 我的网络应用程序就会抛出PDOException
找不到驱动程序。当我删除hhvm:true
并重新提供宅基地时,例外就消失了。
显然,HHVM的配置不包括PGSQL驱动程序。
我该如何纠正?
答案 0 :(得分:7)
您没有提供有关您的设置的大量详细信息,因此不清楚您是否安装了Postgres驱动程序。开箱即用不支持Postgres。您必须自己构建和/或安装它。
Facebook有一个"official" list of HHVM extensions。 PGSQL尚未(尚未)集成到HHVM中,但Facebook的页面指向外部GitHub项目,该项目位于:
以下是项目说明的摘要;您可以在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才能让服务器选择扩展名。