php扩展编写


PHP #扩展2012-04-26 17:18

现在写个简单的 helloworld

1 获取php源码包解压
wget http://
tar

2 进入php源码包ext 目录

cd php-5.2.14/ext

3 生成扩展框架

./ext_skel --extname=wang

实例:
--------------
[root@domain09 ext]# ./ext_skel --extname=wang
Creating directory wang
Creating basic files: config.m4 config.w32 .cvsignore wang.c php_wang.h CREDITS EXPERIMENTAL tests/001.phpt wang.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/wang/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-wang
5.  $ make
6.  $ ./php -f ext/wang/wang.php
7.  $ vi ext/wang/wang.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/wang/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
------------------------------------------------------------------

这个命令会在php-5.2.14/ext目录里面生成 wang目录 并在该目录生成一些文件 其中用到的 是3个文件  一个是config.m4 一个是php_wang.h  一个是 wang.c

实例:
------------------------------------------------------
[root@domain09 wang]# ll
total 64
-rw-r--r-- 1 root root 1975 Jan 20 09:59 config.m4
-rw-r--r-- 1 root root  282 Jan 20 09:59 config.w32
-rw-r--r-- 1 root root    4 Jan 20 09:59 CREDITS
-rw-r--r-- 1 root root    0 Jan 20 09:59 EXPERIMENTAL
-rw-r--r-- 1 root root 2666 Jan 20 09:59 php_wang.h
drwxr-xr-x 2 root root 4096 Jan 20 09:59 tests
-rw-r--r-- 1 root root 5133 Jan 20 09:59 wang.c
-rw-r--r-- 1 root root  496 Jan 20 09:59 wang.php
------------------------------------------------------------

编辑 这三个文件


vi config.m4

把下面这两句前面的的dnl去掉,保存


dnl PHP_ARG_ENABLE(wang, whether to enable wang support,
dnl [  --enable-wang           Enable wang support])

  vi php_wang.h

找到PHP_FUNCTION(confirm_wang_compiled);    /* For testing, remove later. */
,新增一行:
PHP_FUNCTION(wang_test);

保存


vi wang.c 

代码后面加上你的c代码


比如
PHP_FUNCTION(wang){

RETURN_STRING("hello world! wangchenglin",1);


}

然后开始编译

[root@domain09 wang]# phpize
[root@domain09 wang]# ./configure --with-php-config=/usr/local/ku6/php/bin/php-config
[root@domain09 wang]# make

然后 wang/modules/下会生成一个wang.so
 
cp 到php的extensions目录  然后 vi php.ini 加上

extension = wang.so

重启php 

<?php

phpinfo();
echo wang();

?>


相关文章

粤ICP备11097351号-1