PHP扩展开发-02-一切都是从HelloWorld开始的

来源:互联网 发布:java去除html代码 编辑:程序博客网 时间:2024/05/21 12:49

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


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


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


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


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


step 1.  进入扩展目录  cd php-5.3.19/ext

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

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

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

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

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

           

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

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

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

          

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

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


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


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


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


step 7.在helloworld目录编译我们的扩展 ./configure --with-php-config=/usr/local/bin/php-config(使用你自己环境的php-config) --enable-helloworld 


step 8.执行make命令  make

            我在执行make的时候,系统报错,错误信息为

            /home/work/src/php-5.3.19/ext/helloworld/helloworld.c:43: error: 'PHP_FE_END' undeclared here (not in a function) 

            make: *** [helloworld.lo] Error 1

            此时,请大家讲helloworld.c中的第43行中PHP_FE_END换成{NULL, NULL, NULL}

            替换完成后,请大家执行make命令重新编译

step 9. 安装我们的扩展

           有些同学可能知道,php的程序可以使用make install进行安装,但是为了更好的理解php的工作原理,

           我们采用手动安装php扩展的方式进行安装,其实php的安装非常简单

           step 9-1  找到php的扩展安装目录

                        work@baidu:~$ php -r "phpinfo();" | grep extension_dir

                        extension_dir => /usr/lib/php5/20090626+lfs => /usr/lib/php5/20090626+lfs

                        我们需要将我们的扩张安装到/usr/lib/php5/20090626+lfs目录下面,

                        在helloworld目录下面执行命令

                        sudo cp modules/helloworld.so /usr/lib/php5/20090626+lfs   目录 /usr/lib/php5/20090626+lfs需要根据自己的实际情况作出改动

           step 9-2  在php.ini中打开我们的扩展

                       同样,请执行下面的命令 

                       work@baidu:~$ php -r "phpinfo();" | grep "php.ini"    

                        Configuration File (php.ini) Path => /etc/php5/cli

                        Loaded Configuration File => /etc/php5/cli/php.ini

                       可以看出php.ini的路径为/etc/php5/cli/php.ini

                       sudo vi /etc/php5/cli/php.ini

                       在文件的最后一行添加代码 extension=helloworld.so

step 10. 验证我们的扩展时否安装成功

                        你可以通过执行下面的命令进行验证 php -r "phpinfo();" | grep helloworld

                        如果你安装成功的话,应该看到下面的信息

                        root@baidu:/usr/lib/php5/20090626+lfs# php -r "phpinfo();" | grep helloworld

                        helloworld

                        helloworld support => enabled

                        

                        至此,php扩展安装完成



               也许你会问,我该怎么打印helloworld呢,别急,下面接着就将helloworld程序了。


               

step 11.  进入扩展helloworld目录,编辑文件php_helloworld.h,在最后一行添加函数   PHP_FUNCTION(fun_helloworld);


step 12.在helloworld.c中实现我们的函数

              

             将fun_helloworld函数加入到helloworld_functions[]中

             

step 13. 编译扩展 make


step 14.按照step 9-2 重新安装我们的扩展


step 15.验证扩展函数

             php -r "echo fun_helloworld();"

             如果一切顺利的话,你就可以看到我们的问候语句了Hello World !


写在后面的话:也许你按照我的步骤走到最后,你看到了我们的问候语hello world,也许你没有,但是我已经尽力的把开发的过程描述的尽量详细,请大家勿要骂我。其实做程序开发的过程就是一个不断解决问题的过程,如果你在我上面的步骤中遇到了问题,那么我要恭喜你,因为你得到一个提高自己能力的机会。在解决问题的过程中,百度、谷歌是我们最好的帮手,虽然你也可以通过其他教程或者官方文档解决问题,但是百度、谷歌对于新手来说却是最快解决问题的方式。


说了这么多,无非是想告诉大家:不要害怕在学习的过程中遇到问题,因为这些问题才是我们进步的基石。



原创粉丝点击