初步介绍PHP扩展开发经验分享


Posted in PHP onSeptember 06, 2012

环境: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

代码内容如下

<?php
echo test();
?>

执行后结果为:This my first extention!

如果你能顺利完成以上几步,恭喜你完成了第一个扩展。

以上是扩展PHP的简单步骤,更多请参考:

PHP 相关文章推荐
php写的简易聊天室代码
Jun 04 PHP
php实现httpclient类示例
Apr 08 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 PHP
php反射类ReflectionClass用法分析
May 12 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
php写的带缓存数据功能的mysqli类
Sep 06 #PHP
一个PHP并发访问实例代码
Sep 06 #PHP
PHP连接MongoDB示例代码
Sep 06 #PHP
谨慎使用PHP的引用原因分析
Sep 06 #PHP
很让人受教的 提高php代码质量36计
Sep 05 #PHP
php控制linux服务器常用功能 关机 重启 开新站点等
Sep 05 #PHP
三个类概括PHP的五种设计模式
Sep 05 #PHP
You might like
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
分享PHP守护进程类
2015/12/30 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
js常见表单应用技巧
2008/01/09 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
Python如何将模块打包并发布
2020/08/30 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
人力资源作业细则
2014/03/03 职场文书
联欢晚会主持词
2014/03/25 职场文书
学生操行评语大全
2014/04/24 职场文书
化工专业自荐书
2014/06/16 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
捐助倡议书
2015/01/19 职场文书
教师个人教学总结
2015/02/11 职场文书
高一作文之暖冬
2019/11/09 职场文书
python not运算符的实例用法
2021/06/30 Python