无法加载HHVM扩展(动态)

kch*_*hkg 5 php c++ facebook hhvm

我正在为HHVM编写C++扩展(动态加载).我按照此页面上的说明操作:https: //github.com/facebook/hhvm/wiki/Extension-API

链接到以下示例:https: //github.com/hhvm/extension-example

我在Ubuntu 14.04上编译了hhvm,耗时近2个小时.然后我也编译了示例扩展.

我的问题是,如何加载它?

互联网上的信息似乎已过时或不一致.无论如何,我首先尝试使用以下行创建/etc/hhvm/config.hdf:

DynamicExtensions {
  example = /path/to/example.so
}
Run Code Online (Sandbox Code Playgroud)

没啥事儿.然后我看到了这个:来自:http://hhvm.com/blog/4349/hhvm-3-0-0

我们正在从.hdf配置文件转移到.ini.默认值存在于/etc/hhvm/php.ini中.我们还不支持所有旧的选项,所以你现在仍然可以使用config.hdf,但要准备好它在下一个版本中死掉.你最喜欢的所有选项都是从Foo {BarBaz = True}到hhvm.foo.bar_baz = true.

好的,然后我尝试在/etc/hhvm/php.ini或/etc/hhvm/server.ini而不是.hdf中添加行

hhvm.dynamic_extensions.example = /path/to/example.so

但没有运气,没有任何效果.我需要更多信息/文档.

那么,有谁知道会发生什么?或者如果Facebook的HHVM团队看到这篇文章,你能帮帮我吗?

小智 7

我看到你已经设法让它加载,所以我只关注无法找到该功能.

在HHVM 3.0发布后不久,从扩展中加载PHP文件的方式发生了变化.基本上,文件名的前四个字符在嵌入时会被剥离,因为它是预期的ext_name.php.直到昨晚,此更改的示例扩展尚未更新.

变化相当简单.只需重命名example.phpext_example.php,然后在config.cmake更改HHVM_SYSTEMLIB(example example.php)HHVM_SYSTEMLIB(example ext_example.php)重新运行cmake . && make.

您可以在此处查看已提交的更改(确实如此)