环境: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

代码内容如下

echo test();

?>

执行后结果为:This my first extention!

如果你能顺利完成以上几步,恭喜你完成了第一个扩展。

以上是扩展PHP的简单步骤,更多请参考:

php扩展介绍,初步介绍PHP扩展开发经验分享相关推荐

  1. 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理

    零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理 1.3.1 扩展包使用 1.3.2 安装 1.3.3 Github和BioConductor的扩展包 1 ...

  2. 001 扩展传感器分类介绍

    001 扩展传感器分类介绍   乐高官方发行版本的传感器相当有限,而市场相当火爆的创客传感器器就很多,比如arduino,树莓派等很多开源传感器.既然乐高EV3开源了软硬件,那么是不是也可以把电子电路 ...

  3. 游戏AI之初步介绍(0)

    目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...

  4. Scilab的初步介绍

    一项软件或者技术可能出现较早,但成熟应用或者受到重视往往需要经过较长时间,一方面是因为软件本身的稳定性有时间规律性,另一方面则是因为人们对于某个事物的接受需要过程性.随着博主研究的深入和各种阅历的增长 ...

  5. powerbi使用说明_微软Power BI入门指南(1):Power BI初步介绍

    来源:数据之巅链接:http://www.cnblogs.com/asxinyu/p/Power_BI_GettingStarted_English_Intro.html 我们在前一篇文章微软新神器- ...

  6. 手机flash技术的初步介绍,(上次飞思的来北京聊了一下)[小糊涂的灵感]

    手机flash技术的初步介绍,(上次飞思的来北京聊了一下) 在中国,早已有一家国产软件厂商致力于手机播放FLASH动画的工作.广州 飞思软件有限公司经过了一年多的努力,终于可以把FLASH移植到支持K ...

  7. [原创]Slatstack 两个数据系统重要组件:Grains和Pillar初步介绍说明

    之前文章<Saltstack命令参数详解以及配置文件说明> 做了一个saltstack 的简单用户举例以及配置文件说明,基本对saltstack这个自动化工具有了一个原理.安装和配置方面的 ...

  8. jquery实现流程图绘制工具——展现红警三建造出兵操作 ——二、代码初步介绍,项目结构与文件介绍

    目录 一.简介 二.代码初步介绍 拓展.实现红警三录像文件读取与自动分析生成流程图信息 ======================= 大爽歌作,made by big shuang ======== ...

  9. python实现红警三录像文件读取与自动分析生成流程图信息——二、项目结构与代码初步介绍

    总目录 一.简介 二.项目结构与代码初步介绍 三.拓展给mod使用 ======================= 大爽歌作,made by big shuang ================== ...

最新文章

  1. 商战特训营 竞合赛场显英才
  2. webstorm遇到的问题
  3. java中configmanager_Spring4新的javaConfig注解
  4. LeetCode 2186. 使两字符串互为字母异位词的最少步骤数
  5. 好迷茫! 工作几年除了写代码,其他啥也不会
  6. 关于合格工程师素养的一些思考
  7. 16进制 转为图片 php_PHP实现简单RPC
  8. TCP/UDP测试工具下载及使用教程
  9. 漏扫工具:Docker一键安装AWVS和Nessus
  10. GPS定位原理、系统组成及工作频段
  11. Word设置默认粘贴格式,自动更改粘贴格式
  12. 为什么很多人选择bgp机房托管
  13. 贴吧老矣,尚能饭否?
  14. echarts折线图设置横向基准线/水平线,超过基准线时折线会变色
  15. 错误解决方案:FATAL: Error inserting cmemk (/lib/modules/2.6.37/kernel/drivers/dsp/cmemk.ko): Bad address
  16. 完美世界手游服务器维护时间表,完美世界手游开服时间表 新区开服时间总览[多图]...
  17. 10月书讯(下) | 小长假我读这些新书
  18. corelDRAW制作笔
  19. Android技术分享
  20. QEvent::Type 比照X的事件

热门文章

  1. c#实现文件批处理:剪切、复制、删除、改名、分类等
  2. Triangle Generative Adversarial Networks
  3. 贺利坚老师汇编课程66笔记:自定义除法中断学习如何编制中断程序
  4. 无需插件利用Chrome将网页储存为mht文件
  5. svg的transform-matrix详解
  6. 简化document.createElement(div)动态生成层方法
  7. 通用的linux下安装配置svn独立服务
  8. 磨刀不误砍柴工,使用visual studio之前应该先了解这些...
  9. 从鞋子的磨损度看性格
  10. [LeetCode] Merge Sorted Array