PHP扩展开发:一个简单的例子
2014-02-22 11:01
866 查看
下面的操作是在Ubuntu 12.04下,并且已经搭建了LAMP环境.
一.下载PHP源码
1.首先安装GIT
sudo apt-get install git
2.克隆PHP源码
cd /
git clone https://github.com/php/php-src.git
ls
会看到php-src文件夹
3.进入ext目录
cd php-src/ext
ls
会看见很多扩展如curl,pdo等,同时还会看见用来建立扩展的脚本ext_skel
二.建立骨架修改参数
1.利用ext_skel建立骨架
./ext_skel --extname=yourname
yourname为你想建立的扩展的名字,我们先建一个,例如为rube
建立好后当前文件夹下会出现rube这个文件夹
cd rube
2.修改config,m4的参数
vim config.m4
dnl Otherwise use enable:
PHP_ARG_ENABLE(rube, whether to enable rube support,
dnl Make sure that the comment is aligned:
[ --enable-rube Enable rube support])
将PHP_ARG_ENABLE(rube, whether to enable rube support 和 [ --enable-rube Enable rube support] 这两行前面的dnl 去掉 。修改成如上所示
三.编写php_rube.h 和 rube.c
1.编辑php_rube.h
vim php_rube.h
在php_rube.h的最后面添加
PHP_FUNCTION(confirm_rube_compiled);
PHP_FUNCTION(hello);
hello 为你要创建的那个函数
2.编辑rube.c
vim rube.c
const zend_function_entry rube_functions[] = {
PHP_FE(confirm_rube_compiled, NULL)
PHP_FE(hello, NULL)
PHP_FE_END
};
修改zend_function_entry rube_functions[] , 在PHP_FE(confirm_rube_compiled, NULL)后面添加
PHP_FE(hello, NULL)
3.编写函数
接下来编写hello这个函数,首先编写一个简单的输出”Hello my first extention”的函数。。。
在rube.c的最后面添加
PHP_FUNCTION(hello)
{
char *arg = "Hello my first extention!";
int len;
char *strg;
len = spprintf(&strg, 0, "%s\n", arg);
RETURN_STRINGL(strg, len, 0);
}
保存后退出
四.编译代码
1.编译成so文件
cd /php-src/ext/rube
whereis phpize
看是否存在phpize
如果存在运行phpize,否则用
sudo apt-get install php5-dev
进行安装后运行
phpize
然后
./configure --with-php-config=你的php-config位置
如果找不到php-config的位置
whereis php-config
./configure --with-php-config=你的php-config位置
接着
make
在编译过程中如果你的代码出现错误,会报错。
make这步中如果提示
Build complete
说明编译成功.然后
make install
安装好后rube.so文件会在当前文件夹下的modules文件夹下,同时也会被安装在系统提示的位置(也就是你的系统中php扩展的默认安装位置),我的提示如下:
Installing shared extensions: /usr/lib/php5/20090626+lfs/
说明rube.so被安装在/usr/lib/php5/20090626+lfs/目录下
ls /usr/lib/php5/20090626+lfs/ #查看是否在此文件夹下
2.修改php.ini
找到php.ini文件 然后打开在文件最后添加
extension=/usr/lib/php5/20090626+lfs/rube.so #我的扩展在/usr/lib/php5/20090626+lfs/rube.so 你可以相应修改
重启apache
五.进行测试
在你网站根目录创建test.php
vim test.php
<?php
echo hello();
结果为
Hello my first extention
一.下载PHP源码
1.首先安装GIT
sudo apt-get install git
2.克隆PHP源码
cd /
git clone https://github.com/php/php-src.git
ls
会看到php-src文件夹
3.进入ext目录
cd php-src/ext
ls
会看见很多扩展如curl,pdo等,同时还会看见用来建立扩展的脚本ext_skel
二.建立骨架修改参数
1.利用ext_skel建立骨架
./ext_skel --extname=yourname
yourname为你想建立的扩展的名字,我们先建一个,例如为rube
建立好后当前文件夹下会出现rube这个文件夹
cd rube
2.修改config,m4的参数
vim config.m4
dnl Otherwise use enable:
PHP_ARG_ENABLE(rube, whether to enable rube support,
dnl Make sure that the comment is aligned:
[ --enable-rube Enable rube support])
将PHP_ARG_ENABLE(rube, whether to enable rube support 和 [ --enable-rube Enable rube support] 这两行前面的dnl 去掉 。修改成如上所示
三.编写php_rube.h 和 rube.c
1.编辑php_rube.h
vim php_rube.h
在php_rube.h的最后面添加
PHP_FUNCTION(confirm_rube_compiled);
PHP_FUNCTION(hello);
hello 为你要创建的那个函数
2.编辑rube.c
vim rube.c
const zend_function_entry rube_functions[] = {
PHP_FE(confirm_rube_compiled, NULL)
PHP_FE(hello, NULL)
PHP_FE_END
};
修改zend_function_entry rube_functions[] , 在PHP_FE(confirm_rube_compiled, NULL)后面添加
PHP_FE(hello, NULL)
3.编写函数
接下来编写hello这个函数,首先编写一个简单的输出”Hello my first extention”的函数。。。
在rube.c的最后面添加
PHP_FUNCTION(hello)
{
char *arg = "Hello my first extention!";
int len;
char *strg;
len = spprintf(&strg, 0, "%s\n", arg);
RETURN_STRINGL(strg, len, 0);
}
保存后退出
四.编译代码
1.编译成so文件
cd /php-src/ext/rube
whereis phpize
看是否存在phpize
如果存在运行phpize,否则用
sudo apt-get install php5-dev
进行安装后运行
phpize
然后
./configure --with-php-config=你的php-config位置
如果找不到php-config的位置
whereis php-config
./configure --with-php-config=你的php-config位置
接着
make
在编译过程中如果你的代码出现错误,会报错。
make这步中如果提示
Build complete
说明编译成功.然后
make install
安装好后rube.so文件会在当前文件夹下的modules文件夹下,同时也会被安装在系统提示的位置(也就是你的系统中php扩展的默认安装位置),我的提示如下:
Installing shared extensions: /usr/lib/php5/20090626+lfs/
说明rube.so被安装在/usr/lib/php5/20090626+lfs/目录下
ls /usr/lib/php5/20090626+lfs/ #查看是否在此文件夹下
2.修改php.ini
找到php.ini文件 然后打开在文件最后添加
extension=/usr/lib/php5/20090626+lfs/rube.so #我的扩展在/usr/lib/php5/20090626+lfs/rube.so 你可以相应修改
重启apache
五.进行测试
在你网站根目录创建test.php
vim test.php
<?php
echo hello();
结果为
Hello my first extention
相关文章推荐
- 一个简单php扩展介绍与开发教程
- 用PHP开发GUI(一个简单的例子)
- 一个简单php扩展介绍与开发教程
- 一个简单php扩展介绍与开发
- 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)
- 快速开发一个PHP扩展图文教程
- J2ME程序开发环境配置的一个简单例子
- Maya插件开发入门(2):一个简单的例子
- 使用Java开发一个非常简单的Web Service例子
- PHP扩展开发之创建一个类
- 编写一个简单的php扩展
- 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)
- php pthreads 多线程扩展的使用:一个较为稳定例子。
- 用PHP开发一个最简单的MVC框架吧
- [转][MEF插件式开发] 一个简单的例子
- 快速开发一个PHP扩展
- 原来开发PHP扩展可以如此简单 3ff0
- 【unity3d游戏开发之基础篇】unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- Apache模块开发/用C语言扩展apache(3:一个非常简单的apache module)