我在使用NGINX在Ubuntu Trusty 14.04(LTS)上使用HHVM 3.1.0工作PGSQL扩展时遇到问题。
#hhvm --version
HipHop VM 3.1.0 (rel)
Compiler: tags/HHVM-3.1.0-0-g71ecbd8fb5e94b2a008387a2b5e9a8df5c6f5c7b
Repo schema: 88ae0db264d72ec2e2eb22ab25d717214aee568b
按照此处的说明,https://github.com/PocketRent/hhvm-pgsql我编辑我的/etc/hhvm/php.ini文件,并添加以下内容:
DynamicExtensionPath = /data/config/etc/hhvm/extensions/
DynamicExtensions {
* = pgsql.so
}
但是在启动HHVM时遇到错误:
# service hhvm restart
* Restarting HHVM FastCGI Daemon hhvm
syntax error, unexpected JUNK, expecting $end or TC_SECTION or TC_LABEL or END_OF_LINE in /etc/hhvm/php.ini on line 13\n
syntax error, unexpected JUNK, expecting $end or TC_SECTION or TC_LABEL or END_OF_LINE in /etc/hhvm/php.ini on line 13\n
我的php.ini看起来像这样
; php options
; hhvm specific
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.mysql.typed_results = false
; hhvm.dynamicextensions.pgsql = /data/config/etc/hhvm/extensions/pgsql.so
DynamicExtensionPath = /data/config/etc/hhvm/extensions/
DynamicExtensions {
* = pgsql.so
}
你可以看到我也根据我从hdf转移到ini文件的信息尝试了以下内容:
hhvm.dynamic_extensions.pgsql = /data/config/etc/hhvm/extensions/pgsql.so
在启动时不会抛出任何错误,但在运行PHP代码时不会呈现错误
if (extension_loaded('pgsql')) {
pgsql.so来自预先构建的二进制文件https://github.com/PocketRent/hhvm-pgsql/tree/releases/3.1.0/ubuntu/trusty,以确保它与我正在使用的Ubunntu / HHVM版本匹配。
有人可以在这里帮忙告诉我发生了什么事吗?
谢谢!
答案 0 :(得分:6)
您目前无法使用INI格式(hhvm.dynamic_extensions.pgsql
或extension
)将扩展程序加载到HHVM中。你必须使用Hdf格式。
执行此操作以使其在Web和CLI中都能正常运行的最简单方法是创建/etc/hhvm/config.hdf
并添加:
DynamicExtensionPath = /data/config/etc/hhvm/extensions
DynamicExtensions {
* = pgsql.so
}
然后,修改/etc/default/hhvm
并取消注释ADDITIONAL_ARGS
行并将其更改为ADDITIONAL_ARGS="-c /etc/hhvm/config.hdf"
。重新启动HHVM然后应该接收它。
CLI会自动尝试加载此文件,因此您不需要在此处执行任何操作(除非您通过-c
选项,否则您需要也传递config.hdf
文件
答案 1 :(得分:2)
根据更新的文档(https://github.com/PocketRent/hhvm-pgsql),您可以在最新版本的hhvm中向hhvm的PHP.INI添加几行。
hhvm.dynamic_extension_path = /path/to/hhvm/extensions
hhvm.dynamic_extensions[pgsql] = pgsql.so