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 相关文章推荐
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
php生成图片缩略图的方法
Apr 07 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
php常用字符函数实例小结
2016/12/29 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
jquery动态增加删减表格行特效
2015/11/20 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
python os.fork() 循环输出方法
2019/08/08 Python
python创建子类的方法分析
2019/11/28 Python
解决Python使用列表副本的问题
2019/12/19 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python如何把字符串类型list转换成list
2020/02/18 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
软件工程师面试题
2012/06/25 面试题
秘书英文求职信
2014/04/16 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
房产分割协议书范文
2014/11/21 职场文书