php扩展开发步骤

环境:
我的主机:win7
虚拟机系统:centos6.4
php版本:5.5

php开发扩展,主要涉及工具ext_skel。

由于我虚拟机使用yum下载,php缺失了ext_skel,问题不大,下载源码,  源码中自带ext_skel
进入自己存放工具目录
:
# cd /home/tool

下载源码:
# wget https://www.php.net/distributions/php-5.5.38.tar.bz2

解压:
# tar -jxvf php-5.5.38.tar.bz2

进入目录ext,就可看到ext_skel,ext_skel_win32是window下的执行工具
# cd php-5.5.38/ext

生成自己的扩展组件框架
# ./ext_skel --extname=tofunc

这个时候会看到在ext目录,存在tofunc目录,并且tofunc目录下已经帮我们创建好基本框架
# cd tofunc

修改config.m4
# vi config.m4
搜索:Otherwise use enable,去掉前面dnl,改成如下图所示

修改头文件
# vi php_tofunc.h
搜索:extern zend_module_entry 新增下面一行
PHP_FUNCTION(tofunc); 
例子如图所示:


编辑c程序
# vi tofunc.c
搜索:const zend_function_entry tofunc_functions[]新增一行:
PHP_FE(tofunc, NULL)
例子如图所示:

搜索:PHP_MINFO_FUNCTION(tofunc) 为了输出phpinfo时候看到扩展相关版本信息
在php_info_print_table_header();后增加下面
php_info_print_table_row(2, "Version", "1.0");
php_info_print_table_row(2, "Author", "Egg");
例子如图所示:

在最底部增加php方法
PHP_FUNCTION(tofunc){
    php_printf("hello toegg");
    RETURN_TRUE;
}

编译安装扩展
(没有安装php-devel,执行不了phpize命令)
# /usr/bin/phpize

生成makefile文件
# ./configure
# make 

测试扩展是否报错
# make test

安装
# make install
安装完,就有tofunc.so生成,并在php扩展模块目录自动生成, 我的扩展目录是在/usr/lib64/php/modules/tofunc.so

测试是否成功,执行当前目录下的测试脚本
# php -d enable_dl=On tofunc.php 或者 php -d enable_dl=On -r "dl('tofunc.so');tofunc();"

修改php.ini
extension="tofunc.so"

重启服务器,
查看扩展
# php -m
或者输出phpinfo 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值