文档章节

php扩展的实例

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

开发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
博文 78
码字总数 59637
作品 0
郑州
高级程序员
PHP的Mongo和MongoDB应该如何选择?

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

江边望海 ⋅ 2016/12/20 ⋅ 0

[Zephir开发实践]用Zephir编写PHP扩展实践

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

暗夜在火星 ⋅ 2014/06/26 ⋅ 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 ⋅ 3

php 反射类简介

反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复 杂,可扩展的应用。其用途如:自动加载插件,自动生成文档,甚至可用来扩充 PHP 语言。php 反射api 由若干类组成,...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

ZendAPI 的 C++ 封装库--PHP-X

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

matyhtf ⋅ 2017/06/13 ⋅ 15

PHP_007 魔术变量和魔术函数

魔术变量 PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 有八...

g00m ⋅ 2015/02/23 ⋅ 0

世界不可能那么远/validator

validator yeah, another params validate component for PHP applications. 嗯,又一个PHP应用参数验证组件 安装 在项目的composer.json文件中的require项中添加: "furthestworld/validat......

世界不可能那么远 ⋅ 2016/12/24 ⋅ 0

PHPTaint-检测xss/sqli/shell注入的php扩展模块[转]

web渗透者习惯采用黑盒或灰盒的方面来检测一款web应用是否存在漏洞,这种检测方法可以屏蔽不少漏洞,特别是程序逻辑中的漏洞。但如果能配合白盒的源码审计(也可以叫漏洞挖掘),效果将会更好...

sunny5156 ⋅ 2013/07/25 ⋅ 0

Laravel5(Lumen)创建服务提供者Service Providers

在搞新浪SAE的时候,把Lumen装上,需要实现Memcahce和Storage的实现,就用到了Lumen的服务提供者,看了下官方文档和查阅了一些资料,记录一下。(本文在Lumen中实现,Laravel中实现几乎差不多...

卖小女孩的小火柴 ⋅ 2016/02/18 ⋅ 1

Pader/vgotfaster modern

#VgotFaster Modern 这是一款敏捷,简单,高效的PHP开发框架。 VgotFaster 的目标是帮助开发者在中小型项目中快速进入的业务逻辑开发中,并且帮助保证程序的结构清晰,而不用花费太多时间在项...

Pader ⋅ 2015/01/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java集合类总结笔记

一、集合类的层次关系 主要容器集合类的特点: ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除的有序序列 ArrayDeque 一种用循环数组实现的...

edwardGe ⋅ 11分钟前 ⋅ 0

spring RMI远程调用

RMI https://www.cnblogs.com/wdh1995/p/6792407.html

BobwithB ⋅ 16分钟前 ⋅ 0

Jenkins实践2 之基本配置

1 插件管理 系统管理->插件管理 在可选插件中可以自主安装插件 2 管理用户 系统管理->管理用户->新建用户 3 安全配置 系统管理->全局安全配置 授权策略 选择安全矩阵 然后添加现有的用户,赋...

晨猫 ⋅ 16分钟前 ⋅ 0

c++智能指针

1、是一种泛型类,针对指针类型的泛型类,会保存指针 2、重载了符号 *和-> 对智能指针使用这两个符号,相当于对保存的泛型使用这两个符号 3、当智能指针引用计数为0时,会去释放指针指向的资...

国仔饼 ⋅ 17分钟前 ⋅ 0

Spring Boot错误处理机制

1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAut...

小致dad ⋅ 19分钟前 ⋅ 0

ftp连接不上的终极办法 SFTP

假如FTP由于各种原因就是连不上,那么用SFTP协议吧,使用登录服务器的账号密码。

sskill ⋅ 23分钟前 ⋅ 0

Unity 围绕旋转角度限制(Transform.RotateAround)

在 Unity 中可以利用 Transform.RotateAround 围绕指定物体进行旋转,但某些情况下可能需要对旋转角度进行控制。我是先计算出预设角度大小,然后判断是否在限定角度范围内是则进行旋转。 相关...

大轩 ⋅ 24分钟前 ⋅ 0

阿里沙箱环境支付宝测试demo

阿里支付宝支付和微信支付,包括:阿里沙箱环境支付宝测试demo,支付宝支付整合到spring+springmvc+mybatis环境和微信整合到如上环境,功能非常齐全,只需要修改对应的配置文件即可,帮助文档...

码代码的小司机 ⋅ 27分钟前 ⋅ 0

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 44分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 48分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部