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文件,不同的机器位置会不一样

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 -m命令

先用

#which php

找到php所在目录,不同机器目录不一样

#/usr/bin/php -m

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调用c接口无错版介绍相关推荐

  1. android调用js接口,Android代码和JavaScript互相调用

    WebView加载一个使用JavaScript的网页,并且要实现相互之间的调用,需要启用WebView对JavaScript的支持,一旦启用之后你就可以通过接口来实现本地代码和JavaScript代码 ...

  2. php和c#短信接口,C#代码示例_C#验证码短信接口 | 微米-中国领先的短信彩信接口平台服务商...

    C#短信接口二代码示例 请求 string mobile = "", cid = "", uid = "", pas = "&qu ...

  3. php和c#短信接口,C#代码示例_C#国际短信接口 | 微米-中国领先的短信彩信接口平台服务商...

    C#国际短信接口代码示例 请求 string mobile = "", cid = "", uid = "", pas = "&q ...

  4. Java基础学习系列--(二)【抽象类,接口、代码块、final、单例、枚举】

    第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对 ...

  5. day02-抽象类,接口、代码块、final、单例、枚举

    java基础[抽象类,接口.代码块.final.单例.枚举] 第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主 ...

  6. SAP WM初阶之MIGO过账后自动调用LT06事务代码

    SAP WM初阶之MIGO过账后自动调用LT06事务代码 1, 执行事务代码MIGO,移动类型201,做一笔发货到成本中心的过账. 输入好相关数据后,过账, 系统自动生成物料凭证号,且自动切换到LT0 ...

  7. vue项目:(全局变量设置与调用)API接口封装 - 代码篇

    vue项目,如何将"API接口" 封装为"全局变量" ? 1. API全局配置文件[global.vue文件] <template><div& ...

  8. 电竞Dota2数据API接口 - 【联赛列表】API调用示例代码

    分享使用接口调用的示例代码,Dota2的[联赛列表]接口. import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotati ...

  9. 足球数据API接口 - 【球员资料】API调用示例代码

    分享下近期使用[球员资料]接口调用的示例代码. 近期感觉并没有遇到什么难点,很易用,另外作为足球比分数据API接口还是挺全面的 import javax.xml.bind.JAXBContext; i ...

最新文章

  1. 4蓝图遍历actor_【虚幻4笔记15】浮动平台
  2. [Android ] linux命令英文缩写的含义(方便记忆)
  3. python3 issubset 判断列表子集
  4. Python协程:从yield/send到async/await
  5. unity 中让Text的文字动态刷新形式
  6. LeetCode 31 下一个排列
  7. 怎么修改ppt的虚线间隔_还有一小时下班,领导交给我一份ppt,做不完不许走!...
  8. 目标检测之空间变形网络(STN)
  9. 理解jQuery的 $ 和 $( )的含义
  10. ASP.NET MVC5总结(二)@HTML扩展
  11. EGS5在linux系统下安装过程
  12. java程序内存泄漏排查
  13. ios 数组中的字典排序_iOS开发——根据数组中的字典中的某一元素排序
  14. 数据库同步功能要慎用
  15. bmob php修改数据,使用Bmob SDK实时数据功能的一次经历
  16. sfr测试图像清晰度 C 语言,SFR分辨率测试卡的不足和改进
  17. JVET专家组下360Lib全景视频投影格式测试平台
  18. unbuntu安装MySQL
  19. 关于nmap -O扫描中出现索尼手机的一份调研
  20. MySQL数据修改语句

热门文章

  1. [TypeScript] Overload a Function with TypeScript’s Overload Signatures
  2. 通过rsync清除目录的shell脚本
  3. Mongodb 定时备份和恢复
  4. C++语言基础(20)-模板的非类型参数
  5. 配置管理篇(0)_SaltStack 安装
  6. 使用Gson对复杂json对象的成员进行删选
  7. CMDB经验分享之 – 剖析CMDB的设计过程
  8. 解决iptables和vsftpd设置的问题
  9. 一道时间复杂度的题目
  10. Linux 性能分析工具总结