重明鸟软件知识平台
@PHP扩展编程
PHP是当下做网站最流行的语言。PHP虽然已经提供了很多丰富的函数和第三方的外部插件。可在实际应用中,我们经常会调用一些自己写的插件。这节我们就来说说如何写PHP的插件,也就是PHP扩展程序。

PHP扩展程序其实就是一个动态链接库。可以随意加载更新。这个动态链接库是用C写的,速度是没得说了。下面我们就来写一个叫Hello的PHP插件。他的语法是这样的
Hello函数:Hello($str);
输出:hello_php:$str

下面我们来看PHP扩展的编写过程。我的环境是Ubuntu14.04,apache2,php。
  1. 安装PHP编译环境
  2. 下载PHP源码
  3. 初始化一个新PHP扩展
  4. 编写新扩展配置文件
  5. 编写新扩展源文件
  6. 编译新扩展程序
  7. 安装扩展程序

1、安装PHP编译环境
sudo apt-get install php5-dev


2、下载PHP源码
我的PHP源码在/mydisk/sdk/php-source目录里。进入这个目录再执行下载命令。大家根据自己情况安排源码存放位置。

sudo apt-get source php5


3、初始化一个新PHP扩展
cd /mydisk/sdk/php5-source/php5-5.5.9+dfsg
chmod 0777 -R ext  
cd ext
./ext_skel --extname=hello --skel=/usr/share/php5/skeleton


4、编写新扩展配置文件
(1)编辑config.m4 进入ext/hello目录,vi config.m4。把里面这三句开头的dnl三个字去掉。

dnl PHP_ARG_ENABLE(hello, whether to enable hello support,  
dnl Make sure that the comment is aligned:  
dnl [  --enable-xw           Enable hello support])

(2)编辑php_hello.h
进入ext/hello目录,vi php_hello.h。里面已经有很多内容了。我们只要加入要新建的函数名即可。
就加了48行那一句。

5、编写扩展源文件
进入ext/hello目录,vi hello.c。先要加入引用新函数。

这里也是只加了43句。
然后在最末加入,函数的实现代码

PHP_FUNCTION(Hello)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;
 
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
        return;
    }
 
    len = spprintf(&strg, 0, "hello_php:%s",arg);
    RETURN_STRINGL(strg, len, 0);
}


6、编译新扩展程序

phpize  
./configure  
make 
sudo make install


7、安装扩展程序
在php.ini文件里加入引用扩展语句:

extension="/usr/lib/php5/20160202/hello.so"

这里要根据实际生成动态库文件位置来填写。php.ini文件在/etc/php5/apache2目录里,要用sudo权限打开。
到这里这个叫hello的扩展就编写和安装好了。下面我们来试下效果。
1、重启apache2,让新扩展生效。
2、编写一个t.php文件。内容如下:

<?php 
	echo Hello("hello php!"); 
?>

3、在浏览器打开http://127.0.0.1/t.php

@站内查找
Copyright @ 2011-2018 by szc  桂ICP备11003301号-1  桂公网安备45040302000027号  Email:szcsoft@qq.com