文档章节

php扩展的实例

刘纪君
 刘纪君
发布于 2013/05/02 21:01
字数 463
阅读 69
收藏 2

开发php已有两年之余,同时自己对c/c++,又有一定的了解,总想弄些属于自己的一些扩展,在看了鸟哥(Laruence)http://www.laruence.com/的关于php扩展的一些资料,自己终于要开始学习php的扩展,今天花了半个小时的时间完成了一个非常的简单的扩展函数:gongchang(string str),虽然里面有很多需要学习的知识,万事开头难,那就开始吧,记录自己的执行步骤:

1:在/home/LPHP/目录下面创建一个文件以skel结尾:gongchang.skel:

内容为:string gongchang(string str)

2:我下载的php源码是php5.3.24利用其目录下面的文件夹下面的ext_skel 进行扩展的处理,告诉php有个扩展:[root@lmlq ext]#./ext_skel --extname=gongchang --proto=/home/LPHP/gongchang.skel

运行之后会在ext目录下生成一个gongchang的目录里面的文件有:

总用量 32
-rw-r--r-- 1 root root 2130 5月   2 20:34 config.m4
-rw-r--r-- 1 root root  317 5月   2 20:34 config.w32
-rw-r--r-- 1 root root    9 5月   2 20:34 CREDITS
-rw-r--r-- 1 root root    0 5月   2 20:34 EXPERIMENTAL
-rw-r--r-- 1 root root 5617 5月   2 20:34 gongchang.c
-rw-r--r-- 1 root root  511 5月   2 20:34 gongchang.php
-rw-r--r-- 1 root root 2870 5月   2 20:34 php_gongchang.h
drwxr-xr-x 2 root root 4096 5月   2 20:34 tests

但是php5.3.24会报这样的错误,google一下说是php5.3源码的错误:

error: ‘PHP_FE_END’ undeclared here (not in a function)]

解决方式是:

sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/**/.c
sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/**/*.c

就可以了。

3:需要修改config.m4 gongchang.c和gongchang.h

config.m4:

修改如下:

将这PHP_ARG_WITH 和 [ --with-gongchang 这两行行前面的dnl(表示的是注释的意思给去掉)

gongchang.c:

将:

注释掉用:

4:编译:

[root@lmlq gongchang]#/usr/local/php/bin/phpize

[root@lmlq gongchang]#./configure --with-php-config=/usr/local/php/bin/php-config

[root@lmlq gongchang]#make && make install

 

 

© 著作权归作者所有

共有 人打赏支持
刘纪君
粉丝 29
博文 133
码字总数 59637
作品 0
郑州
高级程序员
PHP的Mongo和MongoDB应该如何选择?

在学习MongoDB的时候,一个绕不开的部分就是使用驱动器链接MongoDB资源,进行增删改查等操作。最常见的驱动器连接方式莫过于PHP了。在选择安装Mongo扩展的时候会发现,官方提供了两个,到底应...

江边望海
2016/12/20
350
0
[Zephir开发实践]用Zephir编写PHP扩展实践

场景描述 首先,还是强烈推荐一下Phalcon这个框架。 由于对这个框架很感兴趣,所以看了其官方文档,并在先前用PHP根据其思想写了两个Phalcon核心类,见链接: #年前福利#Phalcon框架部分核心...

暗夜在火星
2014/06/26
0
0
php操作redis cluster集群

php要操作redis cluster集群有两种方式: 1、使用phpredis扩展,这是个c扩展,性能更高,但是phpredis2.x扩展不行,需升级phpredis到3.0,但这个方案参考资料很少 2、使用predis,纯php开发,...

wjw555
07/09
0
0
facebook的php性能分析工具--xhprof

原文链接:http://www.cleey.com/blog/single/id/439.html pecl安装看这里:http://www.cleey.com/blog/single/id/816.html xhprof为facebook的php性能分析工具,xhprof安装,这里我先贴出大...

Cleey
2016/01/04
1K
3
ZendAPI 的 C++ 封装库--PHP-X

PHP ZendAPI 的 C++ 封装库,可以用于快速开发 PHP 扩展。PHP-X 使用了完全面向对象的设计,使得 PHP 扩展开发、C++ 嵌入 PHP 变得非常简单,实现了 C++ 和 PHP 的互通。 环境依赖: PHP-7....

matyhtf
2017/06/13
3.3K
15

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
22分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
23分钟前
13
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
24分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
34分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部