php扩展开发之hello world CentOS安装配置nginx和php Linux 下PHP扩展开发系列:二. 一个典型的扩展开发

最近在公司作的事情就是php扩展开发,虽然我只负责c++代码的编写,可是了解扩展开发的流程仍是颇有必要的。php

(本文介绍的是动态扩展,对静态扩展有兴趣的读者可自行google)html

php扩展开发环境搭建可参考:nginx

CentOS安装配置nginx和php

假设咱们须要增长一个函数echodemo_string,对应的php代码以下:c++

function echodemo_string($param) {
    $result = "your input is $param";
    return $result;
}

1. 建立扩展框架vim

这里要用到一个工具:ext_skel,它位于php源码目录的ext目录下。框架

假设扩展的名字为echodemo。函数

首先进入ext目录,php-fpm

建立文件echodemo.skel,编辑文件内容工具

string echodemo_string(string param)

而后执行:post

./ext_skel --extname=echodemo --proto=echodemo.skel

执行完毕会生成 echodemo 目录,目录包含以下内容:

2. 修改配置

打开config.m4,将第十、十一、12行前面的dnl去掉,dnl表示注释。

3. 实现功能

打开echodemo.c,echodemo_string函数定义以下:

修改该函数实现咱们须要的功能,最终实现以下:

(vim主题太丑了,我得换换。。。)

4. 编译安装扩展

这里须要用到phpize生成configure文件,在个人机器上,phpize位于/usr/local/php/bin目录。

phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

当出现 "Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/",表示新的扩展 echodemo.so 已经安装完成。

此时还须要作的一件事就是修改 php.ini 文件。

不知道 php.ini 文件在哪?直接 php -i | grep php.ini 。个人在 /usr/local/php/lib 目录下。

文件末尾追加一行:

extension=echodemo.so

5. 验证安装

重启php-fpm:service php-fpm restart,

检查扩展是否加载:

php -m | grep echodemo

若是顺利,终端会输出 echodemo。

检查扩展代码是否正确:

php -r "echo echodemo_string('hello world');"

注意,我外部用的双引号,函数参数用的单引号,这是为了不一些转义错误。

参考资料:

PHP扩展开发:第一个扩展

Linux 下PHP扩展开发系列:二. 一个典型的扩展开发

 

最后配张图:

相关文章
相关标签/搜索