php调用c接口无错版介绍


Posted in PHP onMarch 11, 2014

1.首先是要安装好PHP

2.进入PHP的下载解压目录下的ext目录
#cd /root/php-5.3.6/ext
#./ext_skel --extname=hmc

说明:
./ext_skel --extname=module_name
module_name是你自己可以选择的扩展模块的名字,例如我选择的hmc。执行工具后会自动在ext目录下建立你选择的module_name名字的目录,里面已经生成了相关的代码,这些代码中只需要调整config.m4文件中的三行注释就可以正常的编译带这个自定义扩展模块的php了。

3.修改config.m4
可以将生成的module目录复制到任意希望放置的地方
进入hmc目录
vi config.m4
使用文本编辑器打开config.m4文件
根据你自己的选择将
dnl PHP_ARG_WITH(hmc, for hmc support,
dnl Make sure that the comment is aligned:
dnl [ --with-hmc Include hmc support])
修改成
PHP_ARG_WITH(hmc for hmc support,
Make sure that the comment is aligned:
[ --with-hmc Include hmc support])
或者将
dnl PHP_ARG_ENABLE(hmc, whether to enable hmc support,
dnl Make sure that the comment is aligned:
dnl [ --enable-hmc Enable hmc support])
修改成
PHP_ARG_ENABLE(hmc, whether to enable hmc support,
Make sure that the comment is aligned:
[ --enable-hmc Enable hmc support])

一般我会选择后者,然后保存退出。

4.修改.c和.h文件代码
Vi hmc.c
将文件其中的下列代码进行修改
/* Every user visible function must have an entry in hmc_functions[].
*/
const zend_function_entry hmc_functions[] = {
PHP_FE(say_hello, NULL) /* 添加着一行代码 */
PHP_FE(confirm_hmc_compiled, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in hmc_functions[] */
};

在文件的最后添加下列代码
PHP_FUNCTION(say_hello)
{
zend_printf("hello world\n");
}
保存文件退出

vi php_hmc.h
在文件中PHP_FUNCTION(confirm_hmc_compiled);一行前面添加下面的代码
PHP_FUNCTION(say_hello);
保存文件退出

5.编译安装
#phpize
#./configure --enable-hmc
#make
#make install
应该在php的modules目录下有一个hmc.so文件,不同的机器位置会不一样

php调用c接口无错版介绍

6.修改PHP配置
编辑php.ini,把扩展加入进去:
在[PHP]模块下增加:
extension = hmc.so
重启Httpd
#service httpd restart

7.php调用
建立一个c.php文件在对应的www目录下
<?
say_hello();
?>
这时浏览器应该输出:
hello world

8.调试
可以在命令行下输入
#php ?q c.php
需要进入当前的www目录下

查看是否安装好模块可以用phpinfo()

php调用c接口无错版介绍

也可以适用php -m命令
先用
#which php
找到php所在目录,不同机器目录不一样
#/usr/bin/php -m
php调用c接口无错版介绍

9.带参数的函数
Vi hmc.c
修改最后的say_hello函数内容如下:
PHP_FUNCTION(say_hello)
{
zval **yourname;
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &yourname) == FAILURE)
{
WRONG_PARAM_COUNT;
}
zend_printf("hello world, %s\n", Z_STRVAL_PP(yourname));
}

修改c.php为
<?
say_hello(“清清月儿");
?>

PHP 相关文章推荐
set_include_path在win和linux下的区别
Jan 10 PHP
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
PHP中simplexml_load_string函数使用说明
Jan 01 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
PHP中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
三种php连接access数据库方法
Nov 11 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
php文件包含的几种方式总结
Sep 19 PHP
php的无刷新操作实现方法分析
Feb 28 PHP
PHP goto语句简介和使用实例
Mar 11 #PHP
php调用C代码的实现方法
Mar 11 #PHP
PHP中isset()和unset()函数的用法小结
Mar 11 #PHP
PHP调用JAVA的WebService简单实例
Mar 11 #PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 #PHP
Yii操作数据库的3种方法
Mar 11 #PHP
php导出excel格式数据问题
Mar 11 #PHP
You might like
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
浅析Jquery操作select
2016/12/13 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
Tostadora意大利:定制T恤
2019/04/08 全球购物
幼教个人求职信范文
2013/12/02 职场文书
单位门卫岗位职责
2013/12/20 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
给老婆的检讨书
2015/01/27 职场文书
西安导游词
2015/02/12 职场文书
手术室护士个人总结
2015/02/13 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android