前言:

在网上搜到了一个非常好的php扩展开发的资料,特翻译过来,并加上自己的见解,因为我跟着走过一遍,非常实用。
原文:http://www.kchodorow.com/blog/2011/08/11/php-extensions-made-eldrich-installing-php/

php扩展允许你在php中使用几乎所有的C/C++代码,这里有4个部分关于这个教程。

  1. 编译安装调试模式的PHP
  2. hello world!,你的第一个php扩展
  3. 开始简单使用C API
  4. 使用C 创建php对象

所有的关于本教程的代码例子都可以在github上找到。


##0x1 编译安装调试模式的PHP

  在你开始开发扩展之前你需要编译php(为了你以后调试更方便),当然如果你很怕麻烦,你可以试着运行

which phpize

如果返回了phpize的路径,你只可以不用看下面的了,直接进入下一章。

  编译php不是什么可怕的事(除非你是在windows下,在这个情况下那我必须欢迎你进入这里).首先你需要下载你想要开发php的那个版本的源码,这里是源码l列表。 当然现在php5.3.* 已经不再维护了。

解压php源码:

$ tar jxvf php-5.3.6.tar.bz2
$ cd php-5.3.6/
$ PHPDIR=`pwd` # setting this up so I can refer to $PHPDIR later

注:这个教程是基于php5.3. 如果你用的不是php5.3. 可能api有一些改动。

安装php,运行:

$ mkdir install-debug-zts # install dir
$ ./configure --enable-debug --enable-maintainer-zts --prefix=$PHPDIR/install-debug-zts
$ make install

我推荐使用自定义的安装路径前缀去安装($PHPDIR),这样可以把你的php和已经安装过的php分开。如果你在默认的安装路径安装了多个php的版本,你将很快变得非常烦,因为你安装在同一个地方,当你需要重新安装的时候,老版本一些文件有的被新版本覆盖,有的被遗留在原来的位置。因此,我们需要有保证有结构组织的去安装php。

这里有一对配置为了开发扩展你应该打开:–enable-debug(调试信息) 和 –enable-maintainer-zts(线程相关的和内存追踪)

当mkae install 执行完了之后,你需要把安装的php添加进环境变量。

$ # this will only add it to the path for this shell
$ PATH=$PHPDIR/install-debug-zts/bin:$PATH