php调用接口接口代码无法执行,php调用c接口无错版介绍
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接口无错版介绍相关推荐
- android调用js接口,Android代码和JavaScript互相调用
WebView加载一个使用JavaScript的网页,并且要实现相互之间的调用,需要启用WebView对JavaScript的支持,一旦启用之后你就可以通过接口来实现本地代码和JavaScript代码 ...
- php和c#短信接口,C#代码示例_C#验证码短信接口 | 微米-中国领先的短信彩信接口平台服务商...
C#短信接口二代码示例 请求 string mobile = "", cid = "", uid = "", pas = "&qu ...
- php和c#短信接口,C#代码示例_C#国际短信接口 | 微米-中国领先的短信彩信接口平台服务商...
C#国际短信接口代码示例 请求 string mobile = "", cid = "", uid = "", pas = "&q ...
- Java基础学习系列--(二)【抽象类,接口、代码块、final、单例、枚举】
第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对 ...
- day02-抽象类,接口、代码块、final、单例、枚举
java基础[抽象类,接口.代码块.final.单例.枚举] 第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主 ...
- SAP WM初阶之MIGO过账后自动调用LT06事务代码
SAP WM初阶之MIGO过账后自动调用LT06事务代码 1, 执行事务代码MIGO,移动类型201,做一笔发货到成本中心的过账. 输入好相关数据后,过账, 系统自动生成物料凭证号,且自动切换到LT0 ...
- vue项目:(全局变量设置与调用)API接口封装 - 代码篇
vue项目,如何将"API接口" 封装为"全局变量" ? 1. API全局配置文件[global.vue文件] <template><div& ...
- 电竞Dota2数据API接口 - 【联赛列表】API调用示例代码
分享使用接口调用的示例代码,Dota2的[联赛列表]接口. import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotati ...
- 足球数据API接口 - 【球员资料】API调用示例代码
分享下近期使用[球员资料]接口调用的示例代码. 近期感觉并没有遇到什么难点,很易用,另外作为足球比分数据API接口还是挺全面的 import javax.xml.bind.JAXBContext; i ...
最新文章
- 4蓝图遍历actor_【虚幻4笔记15】浮动平台
- [Android ] linux命令英文缩写的含义(方便记忆)
- python3 issubset 判断列表子集
- Python协程:从yield/send到async/await
- unity 中让Text的文字动态刷新形式
- LeetCode 31 下一个排列
- 怎么修改ppt的虚线间隔_还有一小时下班,领导交给我一份ppt,做不完不许走!...
- 目标检测之空间变形网络(STN)
- 理解jQuery的 $ 和 $( )的含义
- ASP.NET MVC5总结(二)@HTML扩展
- EGS5在linux系统下安装过程
- java程序内存泄漏排查
- ios 数组中的字典排序_iOS开发——根据数组中的字典中的某一元素排序
- 数据库同步功能要慎用
- bmob php修改数据,使用Bmob SDK实时数据功能的一次经历
- sfr测试图像清晰度 C 语言,SFR分辨率测试卡的不足和改进
- JVET专家组下360Lib全景视频投影格式测试平台
- unbuntu安装MySQL
- 关于nmap -O扫描中出现索尼手机的一份调研
- MySQL数据修改语句