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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
PHP编码转换
Nov 05 PHP
基于PHP生成静态页的实现方法
May 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
详解php与ethereum客户端交互
Apr 28 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 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学习资源和链接.
2006/12/05 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
详解Python的Django框架中的模版相关知识
2015/07/15 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
Python对列表的操作知识点详解
2019/08/20 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python流程控制语句的深入讲解
2020/06/15 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
实习生矿工检讨书
2014/10/13 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python