日期:2014-05-17  浏览次数:20539 次

PHP扩展开发-v1.0

PHP扩展开发

Author: 牛家明

Iamnew <niujiaming0819@gmail.com>

QQ: 947847775

 

1      前言

这篇文章是我个人的学习笔记,我把这篇文章送给所有喜欢PHP语言,喜欢PHP扩展开发的同行、同学们。

 

2      前期准备

闲话不和大家撤了,如果您想学习php的扩展开发,相信您对php基础知识已经有了一定的了解。PHP扩展时用C语言编写的,如果您还不知道C语言

里面指针式什么东西,建议您先移步他出,好好学习一下C语言,大家都在骂谭浩强的《C语言程序设计》,但是我仍然建议您好好看看这本书。

     做PHP开发得先准备一下环境吧。说起来容易,对于一些新手来说恐怕也是一场噩梦。建议您安装UBUNTU LINUX,网上有很多的linux安装教程,相信我不用多说了。

     我们假设您已经安装了linux,我用的debain,不过ubuntu的同学不用担心,因为ubuntu是debain变话而来的,所谓万变不离其宗,相信您使用ubuntu可以达到同样的效果。

2.1     开发环境搭建

     首先,我们安装一下php的开发环境:PHP+APACHE2+MYSQL

    UBUNTU下的安装很简单,简单到您只需要执行下面的命令就可以了:

    sudo apt-get install apache2

    sudo apt-get install php5

    sudo apt-get install libapache2-mod-php5

    sudo apt-get install mysql-server

    sudo apt-get install libapache2-mod-auth-mysql

    sudo apt-get install php5-mysql

    sudo /etc/init.d/apache2 restart

2.2     源码部署

     进行php扩展开发我们还需要下载一份php的源代码,我们以PHP5.3为例进行php扩张开发讲解,下面是一些下载地址,为了防止下载链接失效,我会不断更新链接,当然PHP版本不会变化^_^

     http://cn2.php.net/get/php-5.3.19.tar.gz/from/this/mirror

     你也可以到www.php.net上面,点击download下载源码。

     假设您已经或得到了源码,下面我们将源代码解压缩  tar xzvf php-5.3.19   如果这个命令不能正确解压缩的话请使用tar xvf php-5.3.19试试,再不行的话用rar解压缩吧,我相信你总有办法将这个文件解压缩~ 多大的事 - _ -

     我们的php扩展是在linux上面开发的,如果您想在win上面开发,这片文章恐怕不太适合您了。但是技术这种东西都是触类旁通,希望您在win上面部署好了环境再来看看我的文章。

3      一切都是从HelloWorld开始的

还记得第一次写代码,是用C语言打印出来了HelloWorld,那天我兴奋激动了一天。希望你你看完本页内容后自己也写一个helloworld的php扩展。

第一个扩展程序,改怎么写呢?

其实很简单~~~ 开始吧~~

上次我们说,我们第一步需要卸载php的源代码,你下载好了吗?

建议:建议大家在开发时,只安装一个php,其实在一个系统中你可以安装多个php,但是为了避免前期很多不必要的解释,读者最好安装一个。等你对php娴熟后,多个php就不在话下了。

3.1     进入扩展目录  cd php-5.3.19/ext

    ext文件夹存放了是php扩展的源代码,同样的,我们编写扩展也需要这里面进行

     大家可以看看ext文件夹下各个文件夹的名字:mysql、xml、zip、sqlite...这些都是php的扩张

3.2     建立扩展开发框架 ./ext_skel --extname=helloworld

     执行上面的命令建立扩张开发的框架,这是你会发现ext文件夹下面多了一个叫helloworld的文件夹,同时命令行也输出了一些文本,

     我们先把这些东西放在这里,不做解释,稍后大家在看看输出的命令是什么意思。

记者这幅图奥,我们下面会分析

3.3     进入php源码的根目录, 编辑文件 vi ext/helloworld/config.m4

     去掉这个文件中的几行注释

          所谓的取消注释,就是讲16~18行前面的dnl去掉而已(不同版本的php源码行数可能不一样,请大家注意)

     注释取消后,保存文件并且退出

3.4     在php根目录执行命令./buildconf --force  这一步以后的文章中进行解释

 

3.5     在php源码的根目录编译php程序,注意命令为   ./configure--with-helloworld

 

3.6     进入我们的扩张目录helloworld,执行命令   phpize

 

3.7     在helloworld目录编译我们的扩展.