linux下 C语言对 php 扩展


Posted in PHP onDecember 14, 2008

一,搭建php环境
下载php 5.2.6 源码 并解压
编译安装,搭建php环境

二,创建扩展项目

进入源码目录
cd php5.2.6/ext/
./ext_skel --extname=my_ext
创建名字为my_ext的项目,最终会生成my_ext.so

三,更改配置和程序
$ vi ext/my_ext/config.m4

根据你自己的选择将

dnl PHP_ARG_WITH(my_ext, for my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --with-my_ext             Include my_ext support])
修改成

PHP_ARG_WITH(my_ext, for my_ext support,
Make sure that the comment is aligned:

[  --with-my_ext             Include my_ext support])
或者将

dnl PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --enable-my_ext           Enable my_ext support])
修改成

PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,

Make sure that the comment is aligned:
[  --enable-my_ext           Enable my_ext support])

$ vi ext/my_ext/php_my_ext.h


PHP_FUNCTION(confirm_my_ext_compiled);       /* For testing, remove later. */
更改为
PHP_FUNCTION(say_hello);    

$ vi ext/my_ext/my_ext.c


zend_function_entry php5cpp_functions[] = {
        PHP_FE(confirm_my_ext_compiled,      NULL) /* For testing, remove later. */
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};
更改为
zend_function_entry php5cpp_functions[] = {
        PHP_FE(say_hello,       NULL)         
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};

在最后添加:
PHP_FUNCTION(say_hello)
{
        zend_printf("hello world\n");
}

四,编译
$ cd my_ext
$ /usr/local/php/bin/phpize
ps: 如果出现:Cannot find autoconf.……的错误信息,则需要安装 autoconf (安装过程略)
$ ./configure  --with-php-config=/usr/local/php/bin/php-config
$ make

这时会编译出 my_ext/modules/my_ext.so

五,配置php.ini
将my_ext.so放入/usr/local/php/ext/目录

$ vi php.ini

修改添加如下:
extension_dir = '/usr/local/php/ext/'
extension=my_ext.so  

六,测试
$ vi test.php
<?php
   say_hello();
?>

$ /usr/local/php/bin/php test.php
hello world.

则大功告成

ps:如有问题请留言,大家共同探讨

PHP 相关文章推荐
PHP排序算法的复习和总结
Feb 15 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 PHP
php 文件状态缓存带来的问题
Dec 14 #PHP
快速开发一个PHP扩展图文教程
Dec 12 #PHP
PHP Google的translate API代码
Dec 10 #PHP
php escape URL编码
Dec 10 #PHP
php 破解防盗链图片函数
Dec 09 #PHP
中英文字符串翻转函数
Dec 09 #PHP
php2html php生成静态页函数
Dec 08 #PHP
You might like
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
简述Angular 5 快速入门
2017/11/04 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
angular 内存溢出的问题解决
2018/07/12 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
浅谈vue加载优化策略
2019/03/19 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
基于pandas中expand的作用详解
2019/12/17 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
医学生求职自荐书
2014/06/12 职场文书