初步介绍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 相关文章推荐
新闻分类录入、显示系统
Oct 09 PHP
谈谈新手如何学习PHP
Dec 14 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php实现读取超大文件的方法
Jul 28 PHP
php实现多城市切换特效
Aug 09 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
php导入模块文件分享
2015/03/17 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python实现繁?转为简体的方法示例
2018/12/18 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
英语系本科生个人求职信
2013/09/21 职场文书
车间组长岗位职责
2013/12/20 职场文书
团代会宣传工作方案
2014/05/08 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
运动会800米赞词
2015/07/22 职场文书
董事长年会致辞
2015/07/29 职场文书