初步介绍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之apc
May 15 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
laravel 实现设置时区的简单方法
Oct 10 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 PHP
imagettftext() 失效,不起作用
Mar 09 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
php 结果集的分页实现代码
2009/03/10 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
iview的table组件自带的过滤器实现
2019/07/12 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python中endswith()函数的基本使用
2015/04/07 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
python中str内置函数用法总结
2020/12/27 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
JSF界面控制层技术
2013/06/17 面试题
职业生涯规划书基本格式
2014/01/06 职场文书
便利店投资创业计划书
2014/02/08 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
物流专业自荐信
2014/05/23 职场文书
一年级小学生评语大全
2014/12/25 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书