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
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php的memcached客户端memcached
Jun 14 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
phpize的深入理解
Jun 03 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
php实现大文件断点续传下载实例代码
Oct 01 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
人族 Terran 魔法与科技
2020/03/14 星际争霸
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
php查看当前Session的ID实例
2015/03/16 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
js选项卡的制作方法
2017/01/23 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Python将图片转换为字符画的方法
2020/06/16 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
Django中信号signals的简单使用方法
2019/07/04 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
解决pip install psycopg2出错问题
2020/07/09 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL