`
xiaodi667
  • 浏览: 65584 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ubuntu下用C编写PHP扩展 例子展示 绝对详细

    博客分类:
  • php
阅读更多

安装php5-dev

 

sudo apt-get install php5-dev

  下载PHP源码

 

sudo apt-get source php5

 创建模块模型

 

cd ./php-5.3.2/ext
./ext_skel --extname=roger
 



 

进入roger目录,这里主要编辑的文件有两个:config.m4和roger.c,config.m4可以配置扩展编译进php的方法,roger.c是编码模块的主要文件。使用vim编辑config.m4文件,找到以下几行:



 改变为:



 退出保存(roger.c暂时不做修改);

执行命令phpize,phpize是用来扩展php模块的,完成后可以看到产生了./configure程序:



 安装

 

./configure --with-php-config=/usr/bin/php-config
make
make install
 


查看生成的roger.so:


修改php.ini加载roger.so,重启apache;

 

查看phpinfo(),可以看到roger.so已经加载:



 创建一个php文件,写入:



 运行结果:


============================== 自定义函数==============================

如果roger.c不做任何修改,会有一个自带的函数confirm_roger_compiled,输出的结果就是上面看到的,下面自定义一个函数。
函数名:roger_test($str)
功能:返回 “your input string:”.$str;

 

重复上面的步骤,修改完config.m4,接着修改php_roger.h和roger.c;
vim php_roger.h
找到:PHP_FUNCTION(confirm_roger_compiled); ,新增一行:
PHP_FUNCTION(roger_test);

 

 

PHP_FUNCTION(confirm_roger_compiled);   /* For testing, remove later. */
PHP_FUNCTION(roger_test);       /* For testing, remove later. */
 

保存退出。

vim roger.c
数组里增加我们的函数,找到 const zend_function_entry roger_functions[] ,增加:
PHP_FE(roger_test, NULL)

 

const zend_function_entry roger_functions[] = {
        PHP_FE(confirm_roger_compiled, NULL) /* For testing, remove later. */
        PHP_FE(roger_test, NULL)  /* For testing, remove later. */
        {NULL, NULL, NULL} /* Must be the last line in roger_functions[] */
};
 

 

保存退出。

再到 roger.c 文件最后面增加如下代码:

PHP_FUNCTION(roger_test)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;
 
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
            return;
    }
 
    len = spprintf(&strg, 0, "your input string: %s\n", arg);
    RETURN_STRINGL(strg, len, 0);
}
 

 

继续执行如下命令

 

./configure --with-php-config=/usr/bin/php-config
make
make install

 重启apache或者nginx

 

在PHP脚本里面直接调用roger_test(”hello kitty! “),结果:


  • 大小: 12.9 KB
  • 大小: 1.8 KB
  • 大小: 2.9 KB
  • 大小: 2.7 KB
  • 大小: 11.8 KB
  • 大小: 2.8 KB
  • 大小: 4.8 KB
  • 大小: 2 KB
  • 大小: 2 KB
  • 大小: 4.7 KB
  • 大小: 3.6 KB
分享到:
评论

相关推荐

    Ubuntu下安装php扩展

    在Ubuntu系统中,安装PHP扩展是一项常见的任务,用于增强PHP的功能。本文主要介绍不随同PHP编译,而是通过生成单独的`.so`文件来安装扩展的方法,这种方法虽然执行效率可能略低,但能实现模块化的扩展管理,使得在不...

    ubuntu下编写C语言程序.md

    首次运用ubuntu编写程序:编写一个主程序文件main1.c和一个子程序文件sub1.c,有如下要求:子程序sub1.c包含一个算术运算函数float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回...

    使用c语言开发php扩展教程

    这是一个涉及多步骤的过程,从设置开发环境到编写C代码并最终在PHP中调用这些扩展。 首先,我们需要建立开发环境。这包括搭建PHP开发环境以及配置Eclipse作为C/C++的开发工具。对于PHP开发,你需要安装PHP源码,...

    Ubuntu安装redis和redis-php扩展

    在本文中,我们将学习如何在 Ubuntu 环境下安装 Redis 数据库和 Redis-PHP 扩展,以便在 PHP 项目中使用 Redis。 安装 Redis 1. 首先,需要下载 Redis 软件包,使用以下命令下载最新版本的 Redis: ``` sudo wget ...

    c语言编写ubuntu下 录音程序

    在本项目中,我们探讨的是如何使用C语言在Ubuntu操作系统上编写一个录音程序。C语言是一种底层编程语言,常用于系统编程、嵌入式开发等领域,因此非常适合创建这样的录音应用。Ubuntu是一个基于Linux的开源操作系统...

    ubuntu 下安装ffmpeg和php 掉用ffmpeg的方法

    上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器, 但下载的格式是amr 格式,我们网页是mp3的多 所以是要将amr 转为mp3 下面是ubuntu 下安装ffmpeg和php 掉用ffmpeg的方法 sudo apt-get update

    ubuntu12.04使用c编写php扩展模块教程分享

    在PHP开发中,有时为了优化性能或实现特定功能,开发者会选择使用C语言编写扩展模块。本教程将指导你在Ubuntu 12.04系统上如何使用C语言为PHP 5.3.10版本创建自定义扩展模块。首先,确保你的系统已经安装了Apache和...

    在VMware下扩展Ubuntu存储容量的方法

    在 VMware 下扩展 Ubuntu 存储容量的方法 在 VMware 虚拟机下扩展 Ubuntu 存储容量是非常必要的,因为虚拟机的硬盘空间设置得很小,会导致 ubuntu 系统安装软件渐渐发现 ubuntu 的存储空间已经不能满足使用要求了。...

    ubuntu下用python编写的修改IP地址和MAC的界面工具

    使用Ubuntu的时候,有时需要修改IP地址和MAC,而用命令行的形式会敲很多东西,用图形界面的方式又找不到什么地方能修改MAC,所以我写了这个小软件,可修改ubuntu的IP地址和MAC

    ubuntu上面使用jni例子

    通过这个例子,你可以了解到如何在Ubuntu系统上将Java和C/C++代码无缝集成,从而发挥两者的优点,解决特定场景下的问题。在实际开发中,JNI常用于提高性能、访问硬件资源、调用已有的C/C++库等。

    ubuntu下安装php5+pdo

    本文介绍了在 Ubuntu 下安装 PHP5 和 PDO_MYSQL 的详细步骤,包括安装 Apache2、PHP5、MySQL 服务器及其相关组件,并提供了两种安装 PDO_MYSQL 的方法。通过这些步骤,你可以成功地在 Ubuntu 上搭建一个功能齐全的 ...

    ubuntu+php5.6环境下连接sqlserver2008扩展库 mssql.so+pdo_dblib.so

    ubuntu14.04+php5.6环境下连接sqlserver2008扩展库 mssql.so+pdo_dblib.so,编译方法:http://blog.csdn.net/hanzengyi/article/details/52054862

    ubuntu下基于Clion+QT编写的界面demo,适合入门

    通过这个入门级的3dvision_qt_demo项目,初学者可以逐步掌握QT界面开发的基本概念和技术,同时也了解如何在Ubuntu环境下使用Clion进行高效的C++开发。在实际操作中,建议结合博客文章...

    Ubuntu下驱动开发HelloWorld_linux_Ubuntu!_ubuntu驱动开发_armrb9_

    Ubuntu下驱动开发HelloWorld

    基于ubuntu的五子棋小案例,使用了C语言进行代码编写

    基于ubuntu的五子棋小案例,使用了C语言进行代码编写,资源中包含Linux常见命令笔记,非常实用的ubuntu案例。

    qt ubuntu12.04 glut c语言 示例代码

    在本主题中,我们将深入探讨如何在Ubuntu 12.04操作系统上使用Qt库结合GLUT(OpenGL Utility Toolkit)来编写C语言的图形用户界面(GUI)示例代码。Qt是一个功能强大的跨平台应用程序开发框架,而GLUT是用于创建和...

    虚拟机下ubuntu使用Gparted扩展分区详细教程+资源.7z

    本文将提供一个详细的教程,指导您如何在虚拟机下使用Gparted扩展Ubuntu分区。 首先,你需要确保你的虚拟机软件(如VMware或VirtualBox)已经安装,并且你的Ubuntu系统能够正常运行。接下来,我们需要下载Gparted。...

    用C语言编写的usb自动识别程序

    在linux嵌入式下用C语言编写的系统自动识别USB接口的插拔的程序

    linux c 再Ubuntu下实现电子相册

    在Linux环境下,特别是Ubuntu操作系统中,开发一个电子相册是一个有趣的项目,同时也涉及到许多核心的计算机科学概念。这个项目利用了C语言编程,以及Linux系统的一些特性,如shell脚本和IO操作。以下是对这些知识点...

    ubuntu 扩展库的安装

    ### Ubuntu 扩展库的安装:CURL扩展详解 #### 安装CURL扩展 CURL是一个非常重要的网络工具及库,它支持多种协议并被广泛应用于数据抓取、文件传输等多种场景。对于PHP开发者来说,CURL扩展是必不可少的一部分,它...

Global site tag (gtag.js) - Google Analytics