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+MySQL的聊天室设计
Oct 09 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php获取网页内容方法总结
Dec 04 PHP
php 生成饼图 三维饼图
Sep 28 PHP
PHP小程序自动提交到自助友情连接
Nov 24 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 PHP
使用PHP开发留言板功能
Nov 19 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+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jquery密码强度校验
2015/12/02 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
python静态方法实例
2015/01/14 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
优秀党员申报材料
2014/12/18 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
python基础之//、/与%的区别详解
2022/06/10 Python