初步介绍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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
php引用传值实例详解学习
Nov 06 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
php生成随机数的三种方法
Sep 10 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
php生出随机字符串
Jul 06 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
laravel5.6实现数值转换
Oct 23 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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
Vue 实例事件简单示例
2019/09/19 Javascript
Python的re模块正则表达式操作
2016/05/25 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
python 内置模块详解
2019/01/01 Python
python爬取微博评论的实例讲解
2021/01/15 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
给学校的建议书
2014/03/12 职场文书
高考寄语大全
2014/04/08 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
放弃继承权公证书
2015/01/23 职场文书
建国大业电影观后感
2015/06/01 职场文书
十月围城观后感
2015/06/08 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
利用Python多线程实现图片下载器
2022/03/25 Python