初步介绍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中strlen和mb_strlen函数的区别
Mar 07 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
php表单处理操作
Nov 16 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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建立外键
2006/11/25 PHP
php的dl函数用法实例
2014/11/06 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
JS 动态加载脚本的4种方法
2009/05/05 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
JS实现鼠标移动拖尾
2020/12/27 Javascript
python中实现精确的浮点数运算详解
2017/11/02 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
django富文本编辑器的实现示例
2019/04/10 Python
Python3分析处理声音数据的例子
2019/08/27 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
python实现梯度下降法
2020/03/24 Python
Python json读写方式和字典相互转化
2020/04/18 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
个人求职信范文
2014/05/24 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
Python基础之条件语句详解
2021/06/16 Python