centos下编写c的扩展(一)

环境描述:CentOS release 6.5 (Final),linux2.6.32-431.el6.x86_64,lamp环境+php源码一份


首先下载一份PHP的源码,并上传到centos服务器上

源码下载地址:https://github.com/php/php-src

 

然后在命令行进入到源码路径下的ext目录

然后创建扩展项目

[root@myhost ext]# ./ext_skel --extname=hello


hello就是扩展项目的名字

创建完成之后ext目录下会多一个hello的文件夹,这个文件夹就是我们的扩展项目

[root@localhost ext]# cd hello/

hello目录下,生成了该扩展的骨架:

centos下编写c的扩展(一)_第1张图片


以后再逐个分析骨架中文件的作用,练习一先跳过

生成扩展框架后,需要修改我们的扩展的m4文件,打开config.m4文件,去掉以下配置前的dnl:

扩展没有包裹任何外部的C库,你需要添加支持–enable-myfunctions配置开关到PHP编译系统里(–with-extension 开关用于那些需要用户指定相关C库路径的扩展)。可以去掉自动生成的下面两行的注释来开启这个配置。



编辑hello.c文件,加入我们的扩展函数

[root@localhost hello]# vim hello.c

centos下编写c的扩展(一)_第2张图片


ps:上图中的RETVAL_STRINGL(strg,len);修改成RETVAL_STRINGL(strg,len,0);不然会报错

然后添加我们这个函数hello


PHP_FUNCTION的参数,就是我们在php中所调用的函数名,这个文件中其他函数,以后再详细了解。

接下来开始编译扩展

[root@localhost hello]# phpize
[root@localhost hello]# ./configure --with-php-config=/usr/bin/php-config  
[root@localhost hello]# make
[root@localhost hello]# make test
[root@localhost hello]# make install


看到如下图:

成功生成了我们的扩展,放在/usr/lib64/php/modules/目录下

接下来修改php.ini文件,加入我们的扩展

[root@localhost hello]# vim /etc/php.ini

centos下编写c的扩展(一)_第3张图片

查看php的模块,可以看到我们的扩展已经被添加进来了

[root@localhost hello]# php -m


centos下编写c的扩展(一)_第4张图片


最后一步,重启apache,编写测试页。




看到输出hello~!到此就结束了。。。


下一练习,将主要了解hello.c中的内容,和zend api,再编写一个有用的php扩展。


你可能感兴趣的:(centos下编写c的扩展(一))