第一步:安装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扩展的更多相关文章

  1. linux编译php gd扩展

    1 安装gd的依赖包 yum -y install gd gd2 gd-devel gd2-devel zlib freetype 2 安装jpeg: wget http://www.ijg.org/ ...

  2. 【转】linux 编译安装nginx,配置自启动脚本

    linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...

  3. linux 编译安装nginx,配置自启动脚本

    本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...

  4. Linux编译ffmpeg

    Linux编译ffmpeg并转换MP3到AMR AMR格式是智能手机上的常用音频文件格式,比如MP3格式的压缩比大,但是文件比MP3小,所以在移动互联项目中应用比较广泛.去年年底协助联想研究院开发一款 ...

  5. Linux编译内核 Ubuntu18.04 -2020.11.04

    Linux编译内核 Ubuntu18.04 -2020.11.04 关闭虚拟机并备份 首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份 下载内核源码 Linux内核官网:https ...

  6. linux编译中的常见问题

    转linux编译中的常见问题 错误提示:Makefile:2: *** 遗漏分隔符 . 停止. 原因makefile中 gcc语句前 缺少一个 tab分割符 错误提示: bash: ./makefil ...

  7. linux下Redis与phpredis扩展安装

    ++++++++++++++++++++++++++++++++++++++++++++++linux下Redis与phpredis扩展安装++++++++++++++++++++++++++++++ ...

  8. 【原创】Linux编译内核

    Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功.   一.准备好必备的库和内核文件   1.添加必备的编译 ...

  9. Linux编译Windows共享目录下代码

    Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的.平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到 ...

随机推荐

  1. PLSQLDeveloper 提示不能初始化?

    原因: oracle数据库是64位的,而 PLSQL Developer 只有32位的! 下载PLSQL_Developer地址: http://pan.baidu.com/share/link?sh ...

  2. qt中添加Q_OBJECT报错的问题

    在qt编写的过程中添加Q_OBJECT后发现老是报错的问题 编译后老是报undefined reference to vtable for "xxx"的错误,后来发现在xxx.pr ...

  3. laravel中日志为daily时如何设置最大保存天数

    在laravel中,日志设置为daily时,默认保存七天的日志,超过则清除七天前的日志.可修改默认的设置,假如要保存30天的日志,则配置如下: 在配置文件config/app.php中添加如下代码: ...

  4. Gradle笔记系列(二)

    1.使用Gradle命令行 在这篇博客中,我们将简要介绍Gradle命令行的使用. 1.1 执行多任务 通过在命令行列出每个任务(task),你可以在一次构建(build)中执行多个任务.例如,命令g ...

  5. memcached 分布式

    memcached定义 memcached 是一套分布式的高速缓存系统,被广泛应用于应用系统的缓存层来提升应用程序的访问速度:memcache缺乏认证以及安全管制,这表明应将memcached服务器放 ...

  6. 从tomcat启动到springIoC容器初始化(编辑中)

    tomcat的启动一般是从startup.bat/startup.sh开始,然后启动catalina.bat/catalina.sh,然后启动bootstrap.jar包 那么它们启动的时候都做了哪些 ...

  7. android app上线后bug的处理

    app上线后,后期维护显得尤为重要,今天给大家分享一下app上线后出现bug后的解决方法 1.继承Application类,重写onCreate方法 import java.io.File; impo ...

  8. SGA(System Global Area)

    系统激活时在内存内规划的一个固定的区域,用于存储每位使用者所需存取的数据和必备的系统信息.这个区域成为系统全局区. 数据块缓存区:存放读取数据文件的数据块副本,或者曾经处理过的数据.有效减少读取数据时 ...

  9. 我是一只IT小小鸟——读后感

    读到书名我便知道,我们是一类人,都是现在在学IT的学生或者打算以后从事IT行业的人,或者现在正在从事IT行业的人,不同区域的人,不同性格的人,不同家庭背景的人,不同,很多的不同,但是我们都有相同的迷惘 ...

  10. hdoj 2034 人见人爱A-B

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...