Linux 下编写一个 PHP 扩展
假设需求
开发一个叫做 helloWord 的扩展。
扩展里有一个函数,helloWord()。
echo helloWord('Tom'); //返回:Hello World: Tom
本地环境
PHP版本:5.6.9
系统:Linux CentOS release 6.5 (Final)
最终效果
实现流程
第一步:
进入到本地的php目录执行:
cd /root/soft/src/php-5.6.9 cd ext ./ext_skel --extname=helloWord cd helloWord vi config.m4 搜索:dnl Otherwise use enable 将下面修改成: PHP_ARG_ENABLE(helloWorld, whether to enable helloWorld support, [ --enable-helloWorld Enable helloWorld support]) if test "$PHP_HELLOWORLD" != "no"; then ...
如图:
第二步:
vi php_helloWorld.h 搜索:extern zend_module_entry 新增一行: PHP_FUNCTION(helloWorld);
如图:
第三步:
vi helloWorld.c 搜索:const zend_function_entry helloWorld_functions[] 新增一行: PHP_FE(helloWorld, NULL)
如图:
在 helloWorld.c 底部新增一个方法 PHP_FUNCTION(helloWorld) { 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 World: %s", arg); RETURN_STRINGL(strg, len, 0); }
如图:
第四步:
//编译安装 cd /root/soft/src/php-5.6.9/ext /usr/local/php/bin/phpize #用phpize生成configure配置文件 ./configure --with-php-config=/usr/local/php/bin/php-config #配置 make #编译 make install #安装
第五步:
//修改php.ini extension="helloWorld.so" #名称为安装扩展的名称
第六步:
重启环境。
完成上面的步骤,简单的 helloWorld 扩展就OK了。
大家可以根据自己的需求,开发满足自己的扩展。
比如,可以开发一些扩展类,扩展方法,等等。