此文章来源于后羿之弓,转载请注明出处

前两天又有一朋友问关于php扩展的开发,在此特作记录,本方法只做不需要编译时加进去的扩展,至于需要编译进去的网上教程众多,在此不述。
1.找到php源程序目录的ext目录里的ext_skel文件,如果没有可以下载php源码找到,要的是ext目录,单纯的ext_skel文件是不够的
2.新建扩展,例hello

  1. ./ext_skel --extname=hello.

(两个-,输错它会提示),命令成功后会生成些许文件。
3.修改config.m4,找到以下三行

  1.  dnl PHP_ARG_WITH(hello, for hello support,
  2.  dnl Make sure that the comment is aligned:
  3.  dnl [ --with-hello Include hello support])

去掉前面的dnl.
4.修改hello.c(hello为扩展的名字),找到里面的PHP_FUNCTION函数体里面的内容修改后就ok了
5.在目录下执行phpize
6.

  1. ./configure --with-php-config=/data/software/php5/bin/php-config

,在此php-config如果在环境变量里那就不用加了,如果它提示找不到那你就得指得php-config的目录了,如果你还有其它要依赖的库,那就–with-库=XXXX就行了。
7.

  1. make

8.

  1. make test

9.

  1. make install

如果没有权限就提权后再执行(结果会返回php扩展目录,如果正确,那扩展已经进去了,如果不正确,则copy hello.so到扩展目录里)
10.修改php.ini,加入extension=hello.so;
11.重启php.查看phpinfo.如果出现了hello的enable信息就可以了。
12.本已经到此结束,但写文件测试一下,突然发现要调什么函数呢?如果只是按上面的步骤下来是没有改函数的,则为confirm_hello_compiled.尝试在php里面调一下confirm_hello_compiled吧。如果要改名就找到程序(.c和.h)里的confirm_hello_compiled修改就ok了。