我正在为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
}
什么都没发生。然后我看到了这个: 来自:http://hhvm.com/blog/4349/hhvm-3-0-0
我们正在从.hdf配置文件迁移到.ini。默认的一个存在 /etc/hhvm/php.ini。我们还不支持所有旧选项,所以你 现在仍然可以使用config.hdf,但要准备好让它死掉 下一个版本。所有你最喜欢的选项都来自Foo {BarBaz = 真实}到hhvm.foo.bar_baz = true。
好的,然后我尝试将行放在/etc/hhvm/php.ini或/etc/hhvm/server.ini而不是.hdf
hhvm.dynamic_extensions.example = /path/to/example.so
但没有运气,没有任何效果。我需要更多信息/文档。
那么,有没有人知道会发生什么?或者如果Facebook的HHVM团队看到这篇文章,你能帮帮我吗?
答案 0 :(得分:7)
我发现您已设法加载它,所以我只关注无法找到该功能。
HHVM 3.0发布后不久,扩展加载PHP文件的方式发生了变化。基本上,文件名的前四个字符在嵌入时会被剥离,因为它应该是ext_name.php
。直到昨晚,示例扩展才更新此更改。
变化相当简单。只需将example.php
重命名为ext_example.php
,然后在config.cmake
将HHVM_SYSTEMLIB(example example.php)
更改为HHVM_SYSTEMLIB(example ext_example.php)
,然后重新运行cmake . && make
。
您可以看到已提交的更改(确实如此)here