【问题标题】:HHVM 3.1.0 & PGSQLHHVM 3.1.0 和 PGSQL
【发布时间】:2015-02-26 12:09:35
【问题描述】:

我在让 PGSQL 扩展在 HHVM 3.1.0、Ubuntu Trusty 14.04 (LTS) 和 NGINX 上工作时遇到问题。

#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 代码时不会呈现 true

if (extension_loaded('pgsql')) {

pgsql.so 来自https://github.com/PocketRent/hhvm-pgsql/tree/releases/3.1.0/ubuntu/trusty 的预构建二进制文件,以确保它与我正在使用的 Ubunntu / HHVM 版本匹配。

谁能在这里帮忙告诉我发生了什么事?

谢谢!

【问题讨论】:

    标签: postgresql hhvm


    【解决方案1】:

    您目前无法使用 INI 格式(hhvm.dynamic_extensions.pgsqlextension)将扩展加载到 HHVM。您必须为此使用 Hdf 格式。

    最简单的方法是创建/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 文件)

    【讨论】:

      【解决方案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 
      

      【讨论】:

      • 这个 /path/to/hhvm/extensions 是否应该归 www-data 用户所有。运行 hhvm 主进程的用户是同一用户吗?我很难过,它没有从我的路径中获取 pgsql.so...
      • 没有。我只是在 /etc/hhvm 中创建了一个名为 extensions 的文件夹,并将我的扩展名放在那里,例如;扩展 hhvm.dynamic_extension_path = /etc/hhvm/extensions hhvm.dynamic_extensions[geoip] = geoip.so hhvm.dynamic_extensions[pgsql] = pgsql.so - 请记住,我现在已经放弃了这个扩展,因为它甚至还没有为开发做好准备我的需求。
      • 它目前不支持 Drupal 7 的 pgsql 驱动程序使用的大对象 (LOB) 流。
      猜你喜欢
      • 2015-09-06
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2014-07-15
      • 1970-01-01
      • 2016-11-01
      相关资源
      最近更新 更多