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 相关文章推荐
在PHP中利用XML技术构造远程服务(上)
Oct 09 PHP
php日历[测试通过]
Mar 27 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
Apr 25 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
最常用的8款PHP调试工具
Jul 06 PHP
smarty简单入门实例
Nov 28 PHP
php输入数据统一类实例
Feb 23 PHP
为百度UE编辑器上传图片添加水印功能
Apr 16 PHP
php对象和数组相互转换的方法
May 12 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 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
thinkphp常见路径用法分析
2014/12/02 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
运行django项目指定IP和端口的方法
2018/05/14 Python
Python基本socket通信控制操作示例
2019/01/30 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
python开发一款翻译工具
2020/10/10 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
护士专业推荐信
2013/11/02 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
我为自己代言广告词
2014/03/18 职场文书
2014年服务员工作总结
2014/11/18 职场文书