php扩展安装示例

php扩展开发入门demo示例

本文实例讲述了php扩展开发。分享给大家供大家参考,具体如下:

一、进入php源码包,找到ext文件夹

  • ?
  • 1
  • cd /owndata/software/php-5.4.13/ext
  • 文件夹下放的都是php的相关扩展模块

    二、生成自己的扩展文件夹和相关文件

    php支持开发者开发自己的扩展,提供了ext_skel骨架,用来构建扩展基本文件

  • ?
  • 1
  • ./ext_skel --extname=myext
  • 运行完成后,会在ext目录下生产一个myext扩展目录

    三、编写一个hello world简单测试扩展

    cd myext

    1.编辑myext目录下的config.m4文件

  • ?
  • 1
  • 2
  • 3
  • dnl PHP_ARG_WITH(myext, for myext support,
  • dnl Make sure that the comment is aligned:
  • dnl [ --with-myext       Include myext support])
  • 将上面这段改成

  • ?
  • 1
  • 2
  • 3
  • PHP_ARG_WITH(myext, for myext support,
  •  
  • [ --with-myext       Include myext support])
  • 2.编辑php_myext.h文件

    修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 这里就是扩展函数声明部分,可以增加一

  • ?
  • 1
  • PHP_FUNCTION(myext_helloworld);
  • 3.编辑myext.c文件在这个里面增加一行PHP_FE(myext_helloworld,  NULL)

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • const zend_function_entry myext_functions[] = {
  •     PHP_FE(confirm_myext_compiled, NULL)      /* For testing, remove later. */
  •     PHP_FE(myext_helloworld, NULL)
  •     PHP_FE_END   /* Must be the last line in myext_functions[] */
  • };
  • 最后在文件末尾加入myext_helloworld执行代码

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • PHP_FUNCTION(myext_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;
  •   }
  •   php_printf("my first ext,Hello World!\n");
  •   RETRUN_TRUE;
  • }
  • 四、编译php扩展

    在myext目录下运行phpize

    /usr/local/webserver/php/bin/phpize

    安装扩展

  • ?
  • 1
  • 2
  • 3
  • ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
  •  
  • make && make install
  • 然后在php安装的目录下生产.so的文件

    /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/myext.so

    复制myext.so文件到php安装的扩展目录下

  • ?
  • 1
  • cp myext.so /usr/local/webserver/php/ext/
  • 编辑php.ini文件加入一行扩展路径

  • ?
  • 1
  • extension=/usr/local/webserver/php/ext/myext.so
  • 重启php-fpm

  • ?
  • 1
  • service php restart
  • 查看php扩展是否安装进去了

  • ?
  • 1
  • /usr/local/webserver/php/bin/php -m|grep myext
  • 确认成功后测试myext打印helloworld

  • ?
  • 1
  • /usr/local/webserver/php/bin/php -r "myext_helloworld('test');"
  • 或者创建demo.php

  • ?
  • 1
  • 2
  • 3
  • <?php
  • echo myext_helloworld('test');
  • ?>
  • /usr/local/webserver/php/bin/php demo.php

    运行后输出

    my first ext,Hello World!

    自此扩展开发小demo就实现了

    希望本文所述对大家PHP程序设计有所帮助。

    原文链接:https://www.cnblogs.com/lisqiong/p/5913302.html

    标签: