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 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php strrpos()与strripos()函数
Aug 31 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
PHP实现懒加载的方法
Mar 07 PHP
php判断访问IP的方法
Jun 19 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
在 Laravel 项目中使用 webpack-encore的方法
Jul 21 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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
thinkphp配置文件路径的实现方法
2016/08/30 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
js 函数的副作用分析
2011/08/23 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
原生js实现表格循环滚动
2020/11/24 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
python制作一个桌面便签软件
2015/08/09 Python
python 简单的多线程链接实现代码
2016/08/28 Python
python实现矩阵打印
2019/03/02 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
thinkphp5 路由分发原理
2021/03/18 PHP
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
给小学生的新年寄语
2014/04/04 职场文书
同志主要表现材料
2014/08/21 职场文书
导游词之襄阳古城
2019/09/27 职场文书