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 项目,位于此处:
以下是项目说明的摘要;您可以在 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 才能让服务器获取扩展。
我的 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 项目,位于此处:
以下是项目说明的摘要;您可以在 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 才能让服务器获取扩展。