初步介绍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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
学习使用PHP数组
Oct 09 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
php学习之数据类型之间的转换代码
May 29 PHP
php数组的一些常见操作汇总
Jul 17 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
PHP实现合并discuz用户
Aug 05 PHP
PHP制作用户注册系统
Oct 23 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
Laravel validate error处理,ajax,json示例
Oct 25 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python3 中文文件读写方法
2018/01/23 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
python爬虫实现获取下一页代码
2020/03/13 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
优秀企业获奖感言
2014/02/01 职场文书
协议书与合同的区别
2014/04/18 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
详解TypeScript的基础类型
2022/02/18 Javascript
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android