Php can';t加载HHVM扩展(动态) 我正在写一个HVHM的C++扩展(动态加载)。我按照本页上的说明进行操作:
链接到中的示例: 我在Ubuntu 14.04上编译了hhvm,花了将近2个小时。然后我还编译了示例扩展 我的问题是,如何加载它 互联网上的信息似乎过时或不一致。 无论如何,我首先尝试使用以下行创建/etc/hhvm/config.hdf:Php can';t加载HHVM扩展(动态) 我正在写一个HVHM的C++扩展(动态加载)。我按照本页上的说明进行操作: ,php,c++,facebook,hhvm,Php,C++,Facebook,Hhvm,链接到中的示例: 我在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配置文件移动到.i
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=
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团队看到了这篇文章,你能帮我吗?我看到你已经设法加载了它,所以我将重点放在找不到函数上 HHVM3.0发布后不久,从扩展加载PHP文件的方式发生了变化。基本上,文件名的前四个字符在嵌入文件时会被去掉,因为它应该是
ext\u name.php
。直到昨晚,示例扩展才针对此更改进行了更新
变化相当简单。只需将example.php
重命名为ext\u example.php
,并在config.cmake
中将HHVM\u SYSTEMLIB(example example.php)
更改为HHVM\u SYSTEMLIB(example ext\u example.php)
然后重新运行cmake.&制作
您可以看到提交的更改(正是这样做的)Update:我可以加载模块,但找不到示例_sum()函数。致命错误:第7行调用/home/ubuntu/example/test.php中未定义的函数example_sum(),为什么编译hhvm?您是否在运行hhvm或已成功安装hhvm时遇到问题?是否在加载扩展时遇到问题?(很抱歉,我不理解您的问题)@ThemisBeris您当前需要自己编译HHVM才能获得
hphpize
以及必要的头文件和cmake文件。是的,我必须编译HHVM,因为当我试图运行hphpize时(未找到cmd…oops)事实上,我在AWS上这样做的成本是每小时0.132美元。你可以安装hhvm dev
,如果你不想编译它,它将允许你运行HPIZ。事实上,我还没有完全解决我的问题。你说我成功地加载了它,是和否。是的,当我运行hhvm-c config.hdf test.php时,但是我的FastCGI安装程序没有加载扩展,并且/etc/hhvm/config.hdf不存在,所以我创建了一个,仍然没有工作。所以我猜hhvm团队把配置文件改成了/etc/hhvm/server.ini?我在extension.cpp中阅读了代码,hhvm似乎仍然读取.hdf config,但它在哪里?@KenjiChan您可以将多个配置文件传递给hhvm。如果编辑/etc/default/hhvm
文件,则可以将附加参数设置为-c/etc/hhvm/config.hdf
,然后在(真)打印时将其与/etc/hhvm/server.ini
一起使用(“谢谢!\n”);更新:我发现我安装了两个版本(3.0.1、3.2.0 dev)的hhvm,我必须修复我的启动脚本以使用更新的版本。因此,我尝试使用“apt get remove hvm”卸载,但它也删除了启动脚本,这似乎是正确的。现在,我必须自己创建/复制脚本,还是在源文件夹中执行类似“sudo make install\u startup\u script”的操作?一个简单的make install
就可以做到,否则所有脚本都可以在存储库中使用,init.d脚本也可以使用。