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)

如图:

搜索:PHP_MINFO_FUNCTION(helloWorld) 

新增版本、作者信息

php_info_print_table_row(2, "Version", "1.0");
php_info_print_table_row(2, "Author", "BiHu");

如图:

在 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了。

大家可以根据自己的需求,开发满足自己的扩展。

比如,可以开发一些扩展类,扩展方法,等等。

Thanks ~

如果大家需要helloWorld扩展包,欢迎大家Q我(留言、私信均可) ~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,090评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2...
    Fattyu阅读 755评论 0 0
  • 1 笔试第一步,一般是笔试,笔试这个环节是很容易,几张试卷,一共也就十几道题。一般由5至10个选择题+2至5个论述...
    灰色程序阅读 386评论 0 1