初步介绍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编写PDF文档生成器
Oct 09 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
php动态函数调用方法
May 21 PHP
php常用数组函数实例小结
Dec 29 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
关于PHP定时发送服务的解决办法
Apr 23 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
python3操作mysql数据库的方法
2017/06/23 Python
python对excel文档去重及求和的实例
2018/04/18 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
python Pexpect模块的使用
2020/12/25 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
计算机相关的自我评价
2014/01/15 职场文书
庆元旦演讲稿
2014/09/15 职场文书
公司股东出资证明书
2014/11/01 职场文书
个人典型事迹材料
2014/12/30 职场文书
教师年终个人总结
2015/02/11 职场文书
工作态度怎么写
2015/06/25 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python