一、安装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
2、rpm安装
# rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm
3、安装 >=5.4以上PHP
# yum --enablerepo=remi install PHP
二、扩展开发
1、PHP源码下载
注意这里下载的版本要跟系统安装的PHP版本保持一致,PHP查看咱在版本命令
PHP -v
我系统安装是5.4 的
2、安装PHPize
(PHPize是用来扩展PHP扩展模块的,通过PHPize可以建立PHP的外挂模块)
# yum install PHPize
3、ext_skel工具
ext_skel 是PHP写扩展提供一个很好用的 “自动构建系统” 使用他可以方便的搭建PHP扩展。 此工具为PHP源码自带工具位于 源码里头的 ext目录下
# cd /PHP-5.4.43/ext # ./ext_skel --extname = 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,[ --with-myext Include myext support])
4、写简单的测试c扩展
修改PHP_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 这里就是扩展函数声明部分,可以增加一
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 文件
添加一行扩展
extension=myext.so
查看扩展是否安装成功
PHP -m
看到多了个myext.so扩展,ok大功告成,接下来我们这看下我们自定义的函数能否正确执行
原文链接:https://www.f2er.com/centos/380614.html