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 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
php下过滤HTML代码的函数
Dec 10 PHP
php MySQL与分页效率
Jun 04 PHP
php 获取mysql数据库信息代码
Mar 12 PHP
php daodb插入、更新与删除数据
Mar 19 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
学习PHP的数组总结【经验】
May 05 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 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
php常用的url处理函数总结
2014/11/19 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
python进行两个表格对比的方法
2018/06/27 Python
python实现简单名片管理系统
2018/11/30 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
Python如何实现机器人聊天
2020/09/10 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
金融行业务员的自我评价
2013/12/13 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
商场营业员岗位职责
2015/04/14 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
Redis数据结构之链表与字典的使用
2021/05/11 Redis
HttpClient实现表单提交上传文件
2022/08/14 Java/Android