扩展修改ubuntu 13.04 用c快速编写一个php扩展
首先声明,我是一个菜鸟。一下文章中现出技术误导情况盖不负责
本文通过非常倏地的方法解讲了如何作制一个PHP 5.4 环境的扩展(PHP Extension)
希望够能在图文的方法下让想倏地学习的友人解了一下作制进程。
需求:我们要写一个叫two的扩展,这个扩展里头有一个函数叫two_test
能功是输入一个字符串‘hello’ 则,返回this is two: 你输入的字符串是“hello”
一:先载下一份php码源---》址地
二: 生成扩展架构
1. 解压码源:
andy@ubuntu:~$ tar -zxvf php-5.4.14.tar.gz 对码源行进解包
2. 生成扩展架构:
php为了扩展开辟便利供提了一个相似生成器的工具,ext_skel在php码源的ext录目上面
我们要需执行它并且指定扩展的名字,然后它会帮我们生成这个扩展的架构
andy@ubuntu:~$ cd php-5.4.14/ext/
andy@ubuntu:~/php-5.4.14/ext$ sudo ./ext_skel --extname=two
三:修改置配:要需将扩展(two)上面的config.m4中的16,17,18三行前面的dnl删撤除
andy@ubuntu:~/php-5.4.14/ext$ cd two/
andy@ubuntu:~/php-5.4.14/ext/two$ sudo vim config.m4
未修改之前:
修改以后:
四:编写代码
1.andy@ubuntu:~/php-5.4.14/ext/two$ sudo vim php_two.h
找到第45行:PHP_FUNCTION(confirm_heiyeluren_compiled);
在这行上面新增一行:PHP_FUNCTION(two_test);
修改前:
修改后:
2.andy@ubuntu:~/php-5.4.14/ext/two$ sudo vim two.c
找到第42行:zend_function_entry heiyeluren_functions
在这里头加增一行PHP_FE(two, NULL)
修改前:
修改后:
最后:加增函数能功代码
PHP_FUNCTION(two_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, "
this is two: 你输入的字符串是
: %s/n", arg); RETURN_STRINGL(strg, len, 0); }
五:编译装安 这里的命令都在扩展two的录目下执行的
andy@ubuntu:~/php-5.4.14/ext/two$ sudo phpize
如果没有phpize要装安php5-dev 命令sudo apt-get install php5-dev
andy@ubuntu:~/php-5.4.14/ext/two$ sudo ./configure --with-php-config=/usr/bin/php/php-config
andy@ubuntu:~/php-5.4.14/ext/two$ sudo make
andy@ubuntu:~/php-5.4.14/ext/two$ sudo make test
andy@ubuntu:~/php-5.4.14/ext/two$ sudo make install
这时会现出:
曾经辉煌过,曾经凋零过,这可是你至死不渝的生活吗?我亲爱的母亲—大自然。多少次,我伏在地上,去聆听你沉重的脉搏声;多少次,我伫立在山前,去感受那松涛千年的浩瀚。你的豪壮,足以让中华民族腾飞;你的无私,谱写了一曲曲感人至深的千古壮曲。
可以到/usr/lib/php5/20100525/这个件文夹中去看看有没有一个叫two.so如果有就明说功成了
六:加载块模
编辑php.ini 入加extension = two.so
注意:如果你不存在扩展件文录目,或者装安报错,那么可以自行建立这个录目,然后把扩展拷贝到录目下,然后记得把 php.ini 件文中的 extension_dir 修改成该录目:
离开php.ini 同录目下的conf.d下创立two.ini并写入extenstion=two.so 只要需这一行就行 。
七:启重apache
andy@ubuntu:/etc/php5/apache2/conf.d$ sudo /etc/init.d/apache2 restart
输出 phpinfo() ,查找two能看到
看看函数否是存在并且调用,在web录目下建立:two.php
<?php
echo two_test('hello');
?>
结果如图:
在现php扩展已作制功成了!
文章结束给大家分享下程序员的一些笑话语录: 程序员的愿望
有一天一个程序员见到了上帝.上帝: 小伙子,我可以满足你一个愿望.程序员: 我希望中国国家队能再次打进世界杯.
上帝: 这个啊!这个不好办啊,你还说下一个吧!
程序员: 那好!我的下一个愿望是每天都能休息6个小时以上.
上帝: 还是让中国国家打进世界杯.
转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/28/3049839.html
扩展修改ubuntu 13.04 用c快速编写一个php扩展相关推荐
- kdm桌面设置Linux,Ubuntu 13.04手动修改KDM、KSPLASH主题
system:Ubuntu 13.04 x64 Qt: 4.8.4 KDE Development Platform: 4.10.5 kde4-config: 1.0 自从安装了KDE桌面管理系统至今 ...
- Ubuntu 13.04 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
[2013年4月28日更新] Ubuntu Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答. 本教程最早是一善鱼 YQ-YSY 于2008年编写并发布在Ubuntu ...
- Ubuntu 13.04 系统管理初探
Ubuntu 13.04 (代号 Raring Ringtail)正式版于上个月底发布,很多对 Ubuntu 情有独钟的网友已经迫不及待尝鲜了,51CTO系统频道也体验了一下,大家可以通过<Ub ...
- win7+ubuntu 13.04双系统安装方法
转载自: win7+ubuntu 13.04双系统安装方法_百度经验 http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html?qq ...
- ubuntu 13.04 设置Dash中显示Eclipse
在ubuntu 13.04 下安装安卓开发工具: adt-bundle android-ndk-r8e 都是解压后配置环境变量就可以使用了.但是Dash搜索不到,看起来很不舒服. 设置如下: 1.终 ...
- 安装ubuntu 13.04
http://geek100.com/2390 今天给笔记本装了Ubuntu 13.04. 用惯了windows, 再用Ubuntu挺新鲜的, 最明显的感觉是Ubuntu的字体更好看. 关于Ubunt ...
- VMware Workstation 8下Ubuntu 13.04中安装VMware Tools出错
vm 8.0上安装ubuntu 13.04系统以后,需要安装一个vm tool 方便屏幕适应和文件拷贝,但是发现由于ubuntu 13.04 使用的内核太新了,而vm8.0 不能够提供这样的文件,导致 ...
- Ubuntu 13.04设置root用户登录图形界面
[日期:2013-04-13] Ubuntu 13.04设置root用户登录图形界面与在Ubuntu 12.10中使用root进行登录方法类似. 相关阅读:Ubuntu 12.10设置root用户登录 ...
- ubuntu 13.04 找回丢失的grub2
为什么80%的码农都做不了架构师?>>> 先恶补一下grub知识: 启动过程 计算机启动后,BIOS将寻找第一个可启动的设备(通常为硬盘),而后从MBR中载入启动程序,然后把控 ...
最新文章
- 因虚而安全---vsftpd虚拟用户
- 2018寒假作业学习总结
- Java 洛谷 P1219 八皇后
- 《构架之美》阅读笔记三
- python关键字的意思_python 关键字(Keywords)
- (计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)
- idea如何自制插件_Lice IntelliJ插件图标制作过程
- JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?...
- Google glass GDK - 通过MP3路径获取专辑图片
- 分清函数指针和指针函数
- 26. Element nodeName 属性
- Qt SQL 学习笔记二:qt建立数据库,创建和操纵表
- centos使用迅雷远程下载
- flutter微信登录与支付--fluwx
- Latex——插入罗马字母或更改字体为公式体
- linux media v4l2,Overview of the V4L2 driver framework (v4l2_subdev)
- 转载:徐家骏:我在华为工作十年的感悟
- 【洛谷】P2713 罗马游戏
- 毕业设计-基于协同过滤算法的高校图书书目推荐系统
- 银行借记卡收费项目一览