php扩展安装示例(php扩展开发入门demo示例)
php扩展安装示例
php扩展开发入门demo示例本文实例讲述了php扩展开发。分享给大家供大家参考,具体如下:
一、进入php源码包,找到ext文件夹
|
cd /owndata/software/php-5 .4.13 /ext |
文件夹下放的都是php的相关扩展模块
二、生成自己的扩展文件夹和相关文件
php支持开发者开发自己的扩展,提供了ext_skel骨架,用来构建扩展基本文件
|
. /ext_skel --extname=myext |
运行完成后,会在ext目录下生产一个myext扩展目录
三、编写一个hello world简单测试扩展
cd myext
1.编辑myext目录下的config.m4文件
|
dnl PHP_ARG_WITH(myext, for myext support, dnl Make sure that the comment is aligned: dnl [ --with-myext Include myext support]) |
将上面这段改成
|
PHP_ARG_WITH(myext, for myext support, [ --with-myext Include myext support]) |
2.编辑php_myext.h文件
修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled);
这里就是扩展函数声明部分,可以增加一
|
PHP_FUNCTION(myext_helloworld); |
3.编辑myext.c文件在这个里面增加一行PHP_FE(myext_helloworld, NULL)
|
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执行代码
|
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
安装扩展
|
. /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安装的扩展目录下
|
cp myext.so /usr/local/webserver/php/ext/ |
编辑php.ini文件加入一行扩展路径
|
extension= /usr/local/webserver/php/ext/myext .so |
重启php-fpm
|
service php restart |
查看php扩展是否安装进去了
|
/usr/local/webserver/php/bin/php -m| grep myext |
确认成功后测试myext打印helloworld
|
/usr/local/webserver/php/bin/php -r "myext_helloworld('test');" |
或者创建demo.php
|
<?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
- php读取txt乱码怎么办(解决php写入数据库乱码的问题)
- php重定向网页(phpStudy V8设置301重定向跳转的实现方法)
- PHP如何安装(PHP使用 Pear 进行安装和卸载包的方法详解)
- thinkphp继承model如何使用(Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解)
- php开发详细步骤(php源码的安装方法和实例)
- 如何解决php跨域问题(php简单检测404页面的方法示例)
- php的底层分析(PHP反射原理与用法深入分析)
- php使用yield处理并发(Yii2.0框架模型多表关联查询示例)
- thinkphp5.1修改(ThinkPHP 5.1 跨域配置方法)
- thinkphp5.1 执行流程(Thinkphp5.0 框架的请求方式与响应方式分析)
- php上传文件的要求(PHP 文件上传限制问题)
- php调试用什么工具好(调试php程序的简单步骤)
- php 获取get url(PHP实现获取url地址中顶级域名的方法示例)
- php依赖注入对象注册(php依赖注入知识点详解)
- phpob函数使用方法(php中isset与empty函数的困惑与用法分析)
- phpcurl详解(解决PHP curl或file_get_contents下载图片损坏或无法打开的问题)
- 这里输入关键词(如何输入关键词)
- 熊猫中国国宝(熊猫国宝酒53酱香)
- 春节会放假几天(春节会放假吗)
- 小浴室,大民生 缙云3200多户困难群众洗上免费热水澡(小浴室大民生缙云3200多户困难群众洗上免费热水澡)
- 元旦闲谭(元旦闲谭)
- 息烽 这个村 治垃圾 有招 人人争当卫生模范(息烽这个村治垃圾)
热门推荐
- mysql的uuid说明(MySQL GTID全面总结)
- vue怎么使用element(Vue Element前端应用开发之图标的维护和使用)
- vue图片切换软件(Vue实现简单图片切换效果)
- dedecms变量的使用(dedecms实现游客可以提问、回答及查看的方法)
- css实现动画的方法(CSS实现悬停过渡动画三部曲)
- dockerbuild清除缓存(Docker自动化构建Automated Build实现过程图解)
- SQL中的CONVERT()函数
- reactnative ios(详解React Native与IOS端之间的交互)
- 有固定ip怎样设置云服务器(云服务器换ip难不难?云服务器换IP的步骤)
- jquery的直接设置下拉框的选中值(jquery实现户籍地选择下拉框)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9