linux编译php的c扩展
第一步:安装php5
第二步:打开终端【为来方便,这里使用root用户】,使用CD命令进入到php5源码包的ext目录
第三步:在终端键入以下命令
./ext_skel --extname=extest
我们的扩展库名叫“extest”,此命令执行后会在ext目录新建一个extest目录。
第四步:回到终端,使用CD命令进入extest目录,键入以下命令/var/web/php/bin/phpize
这是站长的phpize的目录,你需要修改成你自己的。运行完之后会在extest目录生成config.m4以及config.w32(windows底下使用),以及configure程序。
双击打开extest目录,打开php_extest.h文件,找到PHP_FUNCTION(confirm_extest_compiled);
在这一行的上面添加PHP_FUNCTION(extest_add);保存后退出。
这里是我们要为extest库编写的add函数到声明。
第五步:打开extest.c文件,找到const zend_function_entry extest_functions[],往下看3行,在PHP_FE_END的上面一行添加PHP_FE(extest_add, NULL),在文件的最后添加函数实现到代码:
点击(此处)折叠或打开
PHP_FUNCTION(extest_add){
long int a,b,c;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"ll",&a,&b )==FAILURE){
return;
}
c=a+b;
RETURN_LONG(c);
}
第六步:打开config.m4文件,找到
PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module...和
[ --enable-caleng_module Enable caleng_module support])两行,删除前面的dnl打开。
第七步:回到终端,使用CD命令进入extest目录,键入命令:
./configure --with-php-config=/var/web/php/bin/php-config
make
make install
/var/web/php/bin/php-config这是站长php-config文件的目录,你应该修改成自己的。
编译顺利的话,在extest/moduels目录和/var/web/php/lib/php/extensions/no-debug-non-zts-20090626目录会产生一个extest.so文件。
第八步:打开php.ini,添加extension=extest.so,保存退出。
第九步:如果你用的是apache,重启apache。如果你用的是nginx+php-fpm,需要重启php-fpm。
如何重启php-fpm?站长没有做重启设置,应此只好先杀死php-fpm的进程在重新启动了。
打开/var/web/php/var/log/php-fpm.log,定位到文档最后,查看php-fpm到进程号,我的是2156.
回到终端,使用命令kill 2156杀死php-fpm进程。
然后重启php-fpm,回到终端使用CD命令进入/var/web/php/sbin目录,使用./php-fpm重启php-fpm。
第十步:测试扩展库。新建一个index.php文件,代码如下:
<?php
echo extest_add(1,2);
phpinfo();
?>
linux编译php的c扩展的更多相关文章
- linux编译php gd扩展
1 安装gd的依赖包 yum -y install gd gd2 gd-devel gd2-devel zlib freetype 2 安装jpeg: wget http://www.ijg.org/ ...
- 【转】linux 编译安装nginx,配置自启动脚本
linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...
- linux 编译安装nginx,配置自启动脚本
本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...
- Linux编译ffmpeg
Linux编译ffmpeg并转换MP3到AMR AMR格式是智能手机上的常用音频文件格式,比如MP3格式的压缩比大,但是文件比MP3小,所以在移动互联项目中应用比较广泛.去年年底协助联想研究院开发一款 ...
- Linux编译内核 Ubuntu18.04 -2020.11.04
Linux编译内核 Ubuntu18.04 -2020.11.04 关闭虚拟机并备份 首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份 下载内核源码 Linux内核官网:https ...
- linux编译中的常见问题
转linux编译中的常见问题 错误提示:Makefile:2: *** 遗漏分隔符 . 停止. 原因makefile中 gcc语句前 缺少一个 tab分割符 错误提示: bash: ./makefil ...
- linux下Redis与phpredis扩展安装
++++++++++++++++++++++++++++++++++++++++++++++linux下Redis与phpredis扩展安装++++++++++++++++++++++++++++++ ...
- 【原创】Linux编译内核
Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功. 一.准备好必备的库和内核文件 1.添加必备的编译 ...
- Linux编译Windows共享目录下代码
Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的.平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到 ...
随机推荐
- [转] AIX lv 4k偏移量
转自:http://www.aixchina.net/Question/29969 前几天在客户数据库做巡检的时候,在警告日志中发现有如下警告:引用WARNING: You are creating ...
- <停车位>version1.0
<停车卫> 产品需求说明书 文档版本号: Version 1.0 文档编号: xxxx 文档密级: 归属部门/项目: 产品名: 停车卫 子系统名: 编写人: kina 编写日期: 2015 ...
- Android studio下载依赖包很慢
build gradle文件 buildscript { repositories { //jcenter() maven { url 'http://maven.oschina.net/conten ...
- 2. Abstract Factory(抽象工厂)
意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性: 一个系统要独立于它的产品的创建.组合和表示时. 一个系统要由多个产品系列中的一个来配置时. 当你要强调一系列相关 ...
- Android(Xamarin)之旅(五)
2016年1月23日,北京迎来了很痛苦的一天,冻死宝宝了,一天都没有出我自己的小黑屋,在这屋子里自娱自乐.不知道你们呢 对于android的四大基本组件(Activity.Service.Broadc ...
- Subliem Text 3 的安装和使用
前两天将Sublime Text3简单的看了看,发现是好经典的开发工具.... 1. sublime Text安装:www.sublimetext.com 此时的版本是: Build 3103 可用的 ...
- 引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。
引用64位dll时候出现 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序. 需要在web.config增加配置 <startup use ...
- UIActivityIndicatorViewStyle
UIActivityIndicatorView *indicatorV = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyl ...
- Get&Post简单说明
一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http:/ ...
- js跳转到新页面传参以及接收参数的方法
1.传递参数: window.location.href = "./list.html?id="+id; 1.接收参数: (1)接收参数函数封装 function GetReque ...