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创建动态图像
Oct 09 PHP
Wordpress php 分页代码
Oct 21 PHP
PHP 编写大型网站问题集
May 07 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
两个php日期控制类实例
Dec 09 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 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+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
再论Javascript的类继承
2011/03/05 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JS中的作用域链
2017/03/01 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
python中zip()方法应用实例分析
2016/04/16 Python
python 常用的基础函数
2018/07/10 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
品牌宣传方案
2014/03/21 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
分公司任命书
2014/06/06 职场文书
2014年村官工作总结
2014/11/24 职场文书
预备党员群众意见
2015/06/01 职场文书
八年级数学教学反思
2016/02/17 职场文书
MySQL 计算连续登录天数
2022/05/11 MySQL