centos php扩展开发流程
2016-09-22 22:31
274 查看
一、安装php
centos 默认 yum 安装 php 版本为 5.3, 很多php框架基本上要求5.4以上版本,这时候不能直接 用 yum install php 需要先改yum 源。1、启动REMI源
1 # cd /tmp 2 # wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 3 # wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm[/code]2、rpm安装
# rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm3、安装 >=5.4以上php
# yum --enablerepo=remi install php二、扩展开发
1、php源码下载
# wget http://cn2.php.net/distributions/php-5.4.43.tar.gz # tar vzxf php-5.4.42.tar.gz
注意这里下载的版本要跟系统安装的php版本保持一致,php查看咱在版本命令php -v
我系统安装是5.4 的2、安装phpize
(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块)# yum install phpize3、ext_skel工具
ext_skel 是php写扩展提供一个很好用的 “自动构建系统” 使用他可以方便的搭建php扩展。 此工具为php源码自带工具位于 源码里头的 ext目录下# cd /php-5.4.43/ext # ./ext_skel --extname = myext
执行生成扩展后 ext 下面会自动多一个 myext文件夹# cd myext # vim config.m4
将 config.m4文件里面dnl PHP_ARG_WITH(myext, for myext support, dnl Make sure that the comment is aligned: dnl [ --with-myext Include myext support])
修改成PHP_ARG_WITH(myext, for myext support, [ --with-myext Include myext support])4、写简单的测试c扩展
修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 这里就是扩展函数声明部分,可以增加一PHP_FUNCTION(confirm_myext_compiled); PHP_FUNCTION(myext_helloworld);
然后修改myext.c,这个是扩展函数的实现部分。const zend_function_entry myext_functions[] = { PHP_FE(confirm_myext_compiled, NULL) /* For testing, remove later. */ PHP_FE(myext_helloworld, NULL) PHP_FE_END /* Must be the last line in myext_functions[] */ };
这的代码是将函数指针注册到Zend引擎,增加一行PHP_FE(myext_helloworld, NULL)(后面不要带分号)。
在myext.c末尾加myext_helloworld的执行代码。PHP_FUNCTION(myext_helloworld) { char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } php_printf("Hello World!\n"); RETRUN_TRUE; }
zend_parse_parameters是用来接受PHP传入的参数,RETURN_XXX宏是用来返回给PHP数据。5、编译安装php扩展
# phpize # ./configure # make # make test # make install
跳到php扩展文件加里头可以看到多了个myext.so 文件# cd /usr/lib64/php/modules # vim /etc/php.ini
添加一行扩展extension=myext.so
查看扩展是否安装成功php -m
看到多了个myext.so扩展,ok大功告成,接下来我们这看下我们自定义的函数能否正确执行
执行php -r “myext_helloworld(‘test’);”,输出hello world!
http://www.cnblogs.com/echosong/p/4639062.html
相关文章推荐
- centos php扩展开发流程
- centos php扩展开发流程
- windows系统下c++扩展PHP开发流程
- PHP扩展开发-执行流程与扩展结构
- PHP扩展开发-内核执行流程与扩展结构
- php扩展开发流程
- 开发php的扩展模块(centos环境下)
- java python php 经典开发流程 开发效率 运行效率&并发&可扩展
- c语言开发php扩展流程
- php扩展开发流程
- PHP扩展开发-内核执行流程与扩展结构
- 开发php的扩展模块(centos环境下)
- CentOS下使用SWIG为PHP53开发扩展
- 快速开发一个PHP扩展
- centOS下配置php-json扩展
- PHP扩展开发笔记
- 一个简单php扩展介绍与开发
- windows下开发PHP扩展dll(无需Cygwin)
- Linux下用C开发PHP扩展
- 快速开发一个PHP扩展