`
txf2004
  • 浏览: 7066192 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[原创]快速开发一个PHP扩展

阅读更多


快速开发一个PHP扩展

作者:heiyeluren
时间:2008-12-5
博客:
http://blog.csdn.net/heiyeshuwu


本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速学习的朋友了解一下制作过程。


需求:比如开发一个叫做 heiyeluren 的扩展,扩展里就一个函数 heiyeluren_test(),输入一个字符串,函数返回:Your input string: xxxxx。
要求:了解C/C++编程,熟悉PHP编程
环境:下载一份php对应版本的源码,我这里是 php-5.2.6,先正常安装php,假设我们的php安装在 /usr/local/php 目录,源码在 /root/soft/php/php-5.2.6/,现在开始!


步骤一:生成扩展框架


cd /root/soft/php/php-5.2.6/ext
./ext_skel --extname=heiyeluren
cd /root/soft/php/php-5.2.6/ext/heiyeluren
vi config.m4
打开文件后去掉 dnl ,获得下面的信息:
PHP_ARG_ENABLE(heiyeluren, whether to enable heiyeluren support,
[ --enable-heiyeluren Enable heiyeluren support])
保存退出.
(图01)

第二步:编写代码

vi php_heiyeluren.h
找到:PHP_FUNCTION(confirm_heiyeluren_compiled); ,新增一行:
PHP_FUNCTION(heiyeluren_test);
保存退出。
(图02)


vi heiyeluren.c
数组里增加我们的函数,找到 zend_function_entry heiyeluren_functions[],增加:
PHP_FE(heiyeluren, NULL)
(图03)

再到 heiyeluren.c 文件最后面增加如下代码:
PHP_FUNCTION(heiyeluren_test)
{
char *arg = NULL;
int arg_len, len;
char *strg;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
}

len = spprintf(&strg, 0, "Your input string: %s\n", arg);
RETURN_STRINGL(strg, len, 0);
}
保存退出。
(图04)

第三步:编译安装

cd /root/soft/php/php-5.2.6/ext/heiyeluren
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make test
make install

现在看看是不是有个 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/heiyeluren.so
编辑php.ini,把扩展加入进去:
vi /usr/local/php/lib/php.ini
在[PHP]模块下增加:
extension = heiyeluren.so
保存退出。
(图05)

注意:如果你不存在扩展文件目录,或者安装报错,那么可以自行建立这个目录,然后把扩展拷贝到目录下,然后记得把 php.ini 文件中的 extension_dir 修改为该目录:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
(图06)

第四步:检查安装结果
现在看看模块加载了没有:
/usr/local/php/bin/php -m,应该会打印出:
[PHP Modules]
...
heiyeluren
...
[Zend Modules]


然后重启apache,输出 phpinfo() ,应该能够看到:
heiyeluren
heiyeluren support enabled
(图07)

看看函数是否存在并且调用,在web目录下建立:heiyeluren.php
<?php
echo "<pre>";
print_r(get_loaded_extensions());
print_r(get_extension_funcs('heiyeluren'));
echo heiyeluren_test('My first php extension');
echo "</pre>";
?>
访问apache,应该能够看到:
Array
(
...
[33] => heiyeluren
)
Array
(
[0] => confirm_heiyeluren_compiled
[1] => heiyeluren_test
)
Your input string: heiyeluren
(图08)


扩展制作成功!

更深入内容请参考这里:http://blog.csdn.net/taft/archive/2006/02/10/596291.aspx

分享到:
评论

相关推荐

    php扩展手册(Extended CHM 中文版)

    用了下,发现比PHP官方中文手册函数手册.chm来,更细致,更适合开发使用,好东西不敢独享,现摘用部分原创者的话: Extended CHM 版则额外提供了以下几种主要特性: 1、附带非常实用用户注释,其价值不亚于用户手册...

    基于PHP开发的OA/协同办公平台源码.zip

    一个基于PHP开发、Yii框架、免费开源的,快速、高效的协同办公管理系统 ,从2012年研发以来,是为了简化企业协同应用开发而诞生的。IBOS从诞生以来一直秉承简洁实用的设计原则,在保持出色的功能和的优秀的用户体验...

    原创的一个PHP+MYSQL论坛

    【标题】"原创的一个PHP+MYSQL论坛"是一个基于PHP编程语言和MySQL数据库系统的论坛软件解决方案。这个论坛系统是由开发者独立创建的,旨在提供一个在线讨论平台,用户可以在上面发表话题、进行互动交流。PHP是一种...

    原创PHP框架:BasicPHP 1.0.0 正式发布

    总之,BasicPHP 1.0.0的发布为PHP开发者提供了一个新的选择,它的设计目标可能是简化开发、提高效率,同时也为未来的扩展和升级留有足够的空间。对于那些希望快速构建Web应用或者对PHP框架有兴趣的开发者,这是一个...

    PHP实例开发源码—乌云CMS伪原创系统(php网站镜像同步程序).zip

    乌云CMS是一款基于PHP开发的伪原创系统,主要用于网站内容管理与镜像同步。通过解析和处理源网站的数据,它可以自动生成伪原创文章,提高网站的SEO排名,并且能够实现网站内容的快速更新和同步。下面我们将深入探讨...

    PHP实例开发源码-好主题原创家具企业网站模板 php版.zip

    【PHP实例开发源码-好主题原创家具企业网站模板 php版.zip】是一个包含PHP源代码的压缩包,专为创建一个以家具为主题的公司网站而设计。这个模板是原创的,这意味着它是由专业开发者精心制作,提供了独特的设计和...

    SEO伪原创2万永词库 PHP带测试文件!

    PHP是一种广泛使用的服务器端脚本语言,尤其适用于Web开发。在这两个文件中,`keyword.php`可能包含了处理关键词替换的核心逻辑,比如读取词库、匹配并替换原文中的关键词、生成新的伪原创内容等功能。 - `test....

    PHP在线伪原创网站源码(同义词交换工具源码)

    3. **独立后台管理**:源码提供了一个独立的后台管理系统,管理员可以通过后台对网站的各项功能进行管理和配置,包括伪原创设置、关键词管理等。 4. **访客提交关键词**:用户可以提交自己想要替换的关键词,这些...

    PHP实例开发源码——金点网络原创图标在线生成器 PHP版.zip

    "PHP实例开发源码——金点网络原创图标在线生成器 PHP版.zip" 是一个基于PHP编程语言的实例项目,主要用于创建在线图标生成器。这个项目由金点网络开发,提供了完整的源代码,让开发者可以研究、学习或在自己的项目...

    ASP网站CMS程序源码——CSS吧原创程序(PHP+MYSQL)实例开发.zip

    总之,这个压缩包为开发者提供了一个学习和实践ASP CMS程序开发的宝贵资源,通过深入研究和分析源码,可以提升Web开发技能,特别是PHP和MySQL的应用。同时,对于想要了解CMS系统工作原理的人来说,这是一个很好的...

    PHP写的用户问答系统源码

    该PHP编写的用户问答系统源码提供了一个基础的在线交互平台,允许用户进行问题的提出、回答以及其他相关操作。...同时,对于有经验的开发者,它也是一个可扩展和定制的基础框架,可以进一步完善以满足特定需求。

    PHP仿网易云原创音乐分享平台网站源码

    PHP仿网易云音乐网站源码 原创音乐分享平台源码一款基于PHP+MYSQL开发制作的原创音乐在线上传分享网站系统,程序,允许用户在网站注册,并上传自己的音乐作品,系统自带广告系统,可为你网站创造收入来源。...

    ASP网站CMS程序源码——CSS吧原创程序(PHP+MYSQL)实例开发.rar

    【标题】"ASP网站CMS程序源码——CSS吧原创程序(PHP+MYSQL)实例开发.rar" 涉及到的是一个基于ASP技术构建的网站内容管理系统(CMS)的源代码,结合了PHP语言和MySQL数据库的实战开发案例。这个程序源码是CSS吧的原创...

    基于PHP的乌云CMS伪原创系统(php网站镜像同步程序).zip

    而网站镜像同步则是将一个网站的内容实时或定时复制到另一个服务器,以达到数据备份、负载均衡或者快速分发的目的。 1. PHP基础:PHP是一种广泛使用的开源脚本语言,特别适合于Web开发。在乌云CMS中,PHP用于处理...

    基于PHP的金点网络原创图标在线生成器PHP版源码.zip

    【标题】中的“基于PHP的金点网络原创图标在线生成器PHP版源码”表明这是一个使用PHP编程语言开发的工具,用于在线生成图标。这个工具可能是由“金点网络”原创设计并实现的,提供了源代码供用户学习、研究或进行二...

    PHP开发的进销存管理系统

    本系统是基于PHP语言进行原创二次开发的,专为一家真实的服装店设计,旨在提供全面、便捷的店铺运营解决方案。下面将详细探讨该系统的各项功能和实现技术。 首先,PHP是一种广泛应用于Web开发的服务器端脚本语言,...

    基于PHP的在线伪原创程序php版源码.zip

    【标题】"基于PHP的在线伪原创程序php版源码.zip"揭示了这是一个使用PHP编程语言编写的在线伪原创工具的源代码包。伪原创工具主要用于处理文本内容,特别是对于SEO(搜索引擎优化)目的,通过替换关键词、调整句子...

    基于PHP的金点网络原创图标在线生成器 PHP版.zip

    【标题】:“基于PHP的金点网络原创图标在线生成器 PHP版.zip”指的是一个使用PHP编程语言开发的图标在线生成工具。这个工具可能是由“金点网络”开发的,专门用于帮助用户创建自定义的图标,并且以Web服务的形式...

    php +access 类型的原创小型论坛

    【标题】:“php +access 类型的原创小型论坛”是一个基于PHP编程语言和Access数据库构建的轻量级讨论平台,特别适合PHP初学者进行学习和实践。PHP是一种广泛使用的开源脚本语言,常用于Web开发,可以嵌入到HTML中,...

    基于PHP的好主题原创家具企业网站模板 php版 v1.0.zip

    【标题】"基于PHP的好主题原创家具企业网站模板 php版 v1.0.zip" 提供的是一个使用PHP语言开发的企业级家具网站模板。这个模板专为家具企业设计,旨在提供一个用户友好、功能丰富的在线展示平台,以促进产品销售和...

Global site tag (gtag.js) - Google Analytics