php扩展介绍,初步介绍PHP扩展开发经验分享
环境:PHP 5.2.14 CentOS 5.5
第一步:建立扩展骨架
cd php-5.2.14/ext
./ext_skel –extname=laiwenhui
第二步:修改编译参数
cd php-5.2.14/ext/laiwenhui
vi config.m4
去掉
PHP_ARG_ENABLE(laiwenhui, whether to enable laiwenhui support,
[ --enable-laiwenhui Enable laiwenhui support])
两行前面的dnl
修改后为:
复制代码代码如下:
dnl Otherwise use enable:
PHP_ARG_ENABLE(laiwenhui, whether to enable laiwenhui support,
dnl Make sure that the comment is aligned:
[ --enable-laiwenhui Enable laiwenhui support])
第三步:编写代码
vim php_laiwenhui.h
在 PHP_FUNCTION(confirm_laiwenhui_compiled); 后面新增一行:PHP_FUNCTION(test);
添加后为:
PHP_FUNCTION(confirm_laiwenhui_compiled); /* For testing, remove later. */
PHP_FUNCTION(test);
然后
vim laiwenhui.c
在PHP_FE(confirm_laiwenhui_compiled, NULL) 后面添加 PHP_FE(test, NULL)
添加后为:
复制代码代码如下:
zend_function_entry laiwenhui_functions[] = {
PHP_FE(confirm_laiwenhui_compiled, NULL) /* For testing, remove later. */
PHP_FE(test, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in laiwenhui_functions[] */
};
在文件最后面增加如下代码:
复制代码代码如下:
PHP_FUNCTION(test)
{
char *arg = “This my first extention!”;
int len;
char *strg;
len = spprintf(&strg, 0, “%s\n”, arg);
RETURN_STRINGL(strg, len, 0);
}
第四步:编译代码
复制代码代码如下:
cd php-5.2.6/ext/laiwenhui
/opt/module/php/bin/phpize
./configure –with-php-config=/opt/module/php/bin/php-config
make
make install
我的PHP安装路径为:/opt/module/php
这个时候会生成一个文件 /opt/module/php/lib/php/extensions/no-debug-non-zts-20060613/laiwenhui.so
编辑PHP配置文件php.ini,添加扩展:
vim php.ini
在[PHP]模块下增加:extension = laiwenhui.so
;extension=php_zip.dll
extension = laiwenhui.so
把php.ini 文件中的 extension_dir 修改为该目录:
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/”
; Directory in which the loadable extensions (modules) reside.
extension_dir = “/opt/module/php/lib/php/extensions/no-debug-non-zts-20060613/”
第五步:检查安装结果
1. 重启apache或者php-fpm
2. /opt/module/php/bin/php -m 看下是否有包含laiwenhui扩展。
第六步:执行测试代码
在网站根目录创建test.php
vim test.php
代码内容如下
echo test();
?>
执行后结果为:This my first extention!
如果你能顺利完成以上几步,恭喜你完成了第一个扩展。
以上是扩展PHP的简单步骤,更多请参考:
php扩展介绍,初步介绍PHP扩展开发经验分享相关推荐
- 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理
零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理 1.3.1 扩展包使用 1.3.2 安装 1.3.3 Github和BioConductor的扩展包 1 ...
- 001 扩展传感器分类介绍
001 扩展传感器分类介绍 乐高官方发行版本的传感器相当有限,而市场相当火爆的创客传感器器就很多,比如arduino,树莓派等很多开源传感器.既然乐高EV3开源了软硬件,那么是不是也可以把电子电路 ...
- 游戏AI之初步介绍(0)
目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...
- Scilab的初步介绍
一项软件或者技术可能出现较早,但成熟应用或者受到重视往往需要经过较长时间,一方面是因为软件本身的稳定性有时间规律性,另一方面则是因为人们对于某个事物的接受需要过程性.随着博主研究的深入和各种阅历的增长 ...
- powerbi使用说明_微软Power BI入门指南(1):Power BI初步介绍
来源:数据之巅链接:http://www.cnblogs.com/asxinyu/p/Power_BI_GettingStarted_English_Intro.html 我们在前一篇文章微软新神器- ...
- 手机flash技术的初步介绍,(上次飞思的来北京聊了一下)[小糊涂的灵感]
手机flash技术的初步介绍,(上次飞思的来北京聊了一下) 在中国,早已有一家国产软件厂商致力于手机播放FLASH动画的工作.广州 飞思软件有限公司经过了一年多的努力,终于可以把FLASH移植到支持K ...
- [原创]Slatstack 两个数据系统重要组件:Grains和Pillar初步介绍说明
之前文章<Saltstack命令参数详解以及配置文件说明> 做了一个saltstack 的简单用户举例以及配置文件说明,基本对saltstack这个自动化工具有了一个原理.安装和配置方面的 ...
- jquery实现流程图绘制工具——展现红警三建造出兵操作 ——二、代码初步介绍,项目结构与文件介绍
目录 一.简介 二.代码初步介绍 拓展.实现红警三录像文件读取与自动分析生成流程图信息 ======================= 大爽歌作,made by big shuang ======== ...
- python实现红警三录像文件读取与自动分析生成流程图信息——二、项目结构与代码初步介绍
总目录 一.简介 二.项目结构与代码初步介绍 三.拓展给mod使用 ======================= 大爽歌作,made by big shuang ================== ...
最新文章
- 商战特训营 竞合赛场显英才
- webstorm遇到的问题
- java中configmanager_Spring4新的javaConfig注解
- LeetCode 2186. 使两字符串互为字母异位词的最少步骤数
- 好迷茫! 工作几年除了写代码,其他啥也不会
- 关于合格工程师素养的一些思考
- 16进制 转为图片 php_PHP实现简单RPC
- TCP/UDP测试工具下载及使用教程
- 漏扫工具:Docker一键安装AWVS和Nessus
- GPS定位原理、系统组成及工作频段
- Word设置默认粘贴格式,自动更改粘贴格式
- 为什么很多人选择bgp机房托管
- 贴吧老矣,尚能饭否?
- echarts折线图设置横向基准线/水平线,超过基准线时折线会变色
- 错误解决方案:FATAL: Error inserting cmemk (/lib/modules/2.6.37/kernel/drivers/dsp/cmemk.ko): Bad address
- 完美世界手游服务器维护时间表,完美世界手游开服时间表 新区开服时间总览[多图]...
- 10月书讯(下) | 小长假我读这些新书
- corelDRAW制作笔
- Android技术分享
- QEvent::Type 比照X的事件
热门文章
- c#实现文件批处理:剪切、复制、删除、改名、分类等
- Triangle Generative Adversarial Networks
- 贺利坚老师汇编课程66笔记:自定义除法中断学习如何编制中断程序
- 无需插件利用Chrome将网页储存为mht文件
- svg的transform-matrix详解
- 简化document.createElement(div)动态生成层方法
- 通用的linux下安装配置svn独立服务
- 磨刀不误砍柴工,使用visual studio之前应该先了解这些...
- 从鞋子的磨损度看性格
- [LeetCode] Merge Sorted Array