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 字符串 小常识
Jun 05 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
Jul 04 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP输入输出流学习笔记
May 12 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 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中的比较运算符详解
2013/10/28 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php实现点击可刷新验证码
2015/11/07 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
vuex的简单使用教程
2018/02/02 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python中常用检测字符串相关函数汇总
2015/04/15 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
Python基础知识点 初识Python.md
2019/05/14 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
如何进行Linux分区优化
2013/02/12 面试题
销售总监工作职责
2013/11/21 职场文书
后勤工作职责
2013/12/22 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
投资合作协议书
2014/04/17 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
教师个人师德总结
2015/02/06 职场文书
2015年监理工作总结范文
2015/04/07 职场文书