[PHP] User Defined Extension

来源:互联网 发布:2017年淘宝卖什么最火 编辑:程序博客网 时间:2024/05/22 06:58

为 PHP 添加扩展库是一件简单的事情。不过首先你最好会一点点C/C++编程技术,并且对Makefile有一定的了解。

以下是在 Linux 下的一个简单例子:

 

首先,进入 php 源代码目录(假设为 PHP_SRC,以下同),使用 php 自带的 ext_skel 工具生成一个新扩展 mk4php:

 

cd PHP_SRC/etc;

./ext_skel --extname=mk4php

 

 

正常情况下您会看到类似这样的输出:

Creating directory mk4php

Creating basic files: config.m4 config.w32 .cvsignore mk4php.c php_mk4php.h CREDITS EXPERIMENTAL tests/001.phpt mk4php.php [done].

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

1.  $ cd ..

2.  $ vi ext/mk4php/config.m4

3.  $ ./buildconf

4.  $ ./configure --[with|enable]-mk4php

5.  $ make

6.  $ ./php -f ext/mk4php/mk4php.php

7.  $ vi ext/mk4php/mk4php.c

8.  $ make

Repeat steps 3-6 until you are satisfied with ext/mk4php/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.

 

 

此时会在 ext/ 目录下生成一个以 mk4php 命名的目录,进去看看。

 

 

编辑 ext/mk4php/ 目录下面的 config.m4 文件,找到下面三行,删掉前面的 dnl 前缀:

 

dnl PHP_ARG_WITH(mk4php, for mk4php support,

dnl Make sure that the comment is aligned:

dnl [  --with-mk4php             Include mk4php support])

 

 

说明:

1. dnl 是注释,删掉表示使改行生效,否则 make 的时候不会生成相应的 modules

2. 也可以使用下面挨着的关于 --enable-mk4php 那三行,两者的区别在于你的扩展是否需要引用外部的库

 

 

然后就是 configure; make; make install

 

configure 的时候,如果你的 apxs 和 php-config 不在默认路径上,则需要指定它们

./configure --with-mk4php --with-apxs=/usr/local/apache/bin/apxs --with-php-config=/usr/local/php/bin/php-config

make

make install

 

说明:

1. make 成功之后会在 ext/mk4php/modules/ 下生成相应的 .so 文件

2. make install 就是把 modules/* 复制到 php 的 extensions 目录

 

 

再下来就是在 php.ini 里添加一行:

extension=mk4php.so

 

最后检查一下是否安装成功:

./php -f ext/mk4php/mk4php.php

 

 

 


 

 

如果上面的步骤都顺利,那开发&测试环境就算搭建成功了,接着你就可以在那个目录下进行开发了

 

特别地,如果你已经写好了相应的 C/C++ 程序,则只需要修改一下 mk4php.c 和 php_mk4php.h 文件,把你的代码 include 进来,

然后重新编译即可。

比如你写了一个 libmk.a ,则可以通过以下步骤添加进来:

 

 

1. vi mk.h

 

 

2. vi mk.c

 

 

3. vi php_mk4php.h

   增加一行

#include "mk.h"

 

4. vi mk4php.c

   找到“zend_function_entry pnr_functions[] = {”,在其下增加相应的函数说明:

 

PHP_FE(php_func1, NULL)

 

5. vi Makefile

   增加对上述两个文件的依赖,并且把你的 .a 库加上

 

6. make clean; make; make install

 

 

然后写个 php 程序测试一下(修改 php.ini 之后记得重启 apache):

 

 

Over.

Good luck!   ^_^

原创粉丝点击