安装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扩展是一项常见的任务,用于增强PHP的功能。本文主要介绍不随同PHP编译,而是通过生成单独的`.so`文件来安装扩展的方法,这种方法虽然执行效率可能略低,但能实现模块化的扩展管理,使得在不...
首次运用ubuntu编写程序:编写一个主程序文件main1.c和一个子程序文件sub1.c,有如下要求:子程序sub1.c包含一个算术运算函数float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回...
这是一个涉及多步骤的过程,从设置开发环境到编写C代码并最终在PHP中调用这些扩展。 首先,我们需要建立开发环境。这包括搭建PHP开发环境以及配置Eclipse作为C/C++的开发工具。对于PHP开发,你需要安装PHP源码,...
在本文中,我们将学习如何在 Ubuntu 环境下安装 Redis 数据库和 Redis-PHP 扩展,以便在 PHP 项目中使用 Redis。 安装 Redis 1. 首先,需要下载 Redis 软件包,使用以下命令下载最新版本的 Redis: ``` sudo wget ...
在本项目中,我们探讨的是如何使用C语言在Ubuntu操作系统上编写一个录音程序。C语言是一种底层编程语言,常用于系统编程、嵌入式开发等领域,因此非常适合创建这样的录音应用。Ubuntu是一个基于Linux的开源操作系统...
上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器, 但下载的格式是amr 格式,我们网页是mp3的多 所以是要将amr 转为mp3 下面是ubuntu 下安装ffmpeg和php 掉用ffmpeg的方法 sudo apt-get update
在PHP开发中,有时为了优化性能或实现特定功能,开发者会选择使用C语言编写扩展模块。本教程将指导你在Ubuntu 12.04系统上如何使用C语言为PHP 5.3.10版本创建自定义扩展模块。首先,确保你的系统已经安装了Apache和...
在 VMware 下扩展 Ubuntu 存储容量的方法 在 VMware 虚拟机下扩展 Ubuntu 存储容量是非常必要的,因为虚拟机的硬盘空间设置得很小,会导致 ubuntu 系统安装软件渐渐发现 ubuntu 的存储空间已经不能满足使用要求了。...
使用Ubuntu的时候,有时需要修改IP地址和MAC,而用命令行的形式会敲很多东西,用图形界面的方式又找不到什么地方能修改MAC,所以我写了这个小软件,可修改ubuntu的IP地址和MAC
通过这个例子,你可以了解到如何在Ubuntu系统上将Java和C/C++代码无缝集成,从而发挥两者的优点,解决特定场景下的问题。在实际开发中,JNI常用于提高性能、访问硬件资源、调用已有的C/C++库等。
本文介绍了在 Ubuntu 下安装 PHP5 和 PDO_MYSQL 的详细步骤,包括安装 Apache2、PHP5、MySQL 服务器及其相关组件,并提供了两种安装 PDO_MYSQL 的方法。通过这些步骤,你可以成功地在 Ubuntu 上搭建一个功能齐全的 ...
ubuntu14.04+php5.6环境下连接sqlserver2008扩展库 mssql.so+pdo_dblib.so,编译方法:http://blog.csdn.net/hanzengyi/article/details/52054862
通过这个入门级的3dvision_qt_demo项目,初学者可以逐步掌握QT界面开发的基本概念和技术,同时也了解如何在Ubuntu环境下使用Clion进行高效的C++开发。在实际操作中,建议结合博客文章...
Ubuntu下驱动开发HelloWorld
基于ubuntu的五子棋小案例,使用了C语言进行代码编写,资源中包含Linux常见命令笔记,非常实用的ubuntu案例。
在本主题中,我们将深入探讨如何在Ubuntu 12.04操作系统上使用Qt库结合GLUT(OpenGL Utility Toolkit)来编写C语言的图形用户界面(GUI)示例代码。Qt是一个功能强大的跨平台应用程序开发框架,而GLUT是用于创建和...
本文将提供一个详细的教程,指导您如何在虚拟机下使用Gparted扩展Ubuntu分区。 首先,你需要确保你的虚拟机软件(如VMware或VirtualBox)已经安装,并且你的Ubuntu系统能够正常运行。接下来,我们需要下载Gparted。...
在linux嵌入式下用C语言编写的系统自动识别USB接口的插拔的程序
在Linux环境下,特别是Ubuntu操作系统中,开发一个电子相册是一个有趣的项目,同时也涉及到许多核心的计算机科学概念。这个项目利用了C语言编程,以及Linux系统的一些特性,如shell脚本和IO操作。以下是对这些知识点...
### Ubuntu 扩展库的安装:CURL扩展详解 #### 安装CURL扩展 CURL是一个非常重要的网络工具及库,它支持多种协议并被广泛应用于数据抓取、文件传输等多种场景。对于PHP开发者来说,CURL扩展是必不可少的一部分,它...