PHP Extension 扩展开发

第 23 章 PHP Extension 扩展开发

目录

1. Extension Example2. PHP_MINFO_FUNCTION

1. Extension Example

创建一个扩展只需要下面几个步骤

# cd php-5.4.14/ext/
# ./ext_skel --extname=netkiller
# cd netkiller
# /srv/php-5.4.8/bin/phpize
# ./configure --enable-netkiller --with-php-config=/srv/php-5.4.8/bin/php-config
# make
# make install

下面我们开始分部讲解,首先创建一个扩展。

./ext_skel --extname=netkiller
Creating directory netkiller
Creating basic files: config.m4 config.w32 .cvsignore netkiller.c php_netkiller.h CREDITS EXPERIMENTAL tests/001.phpt netkiller.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/netkiller/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-netkiller
5.  $ make
6.  $ ./php -f ext/netkiller/netkiller.php
7.  $ vi ext/netkiller/netkiller.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/netkiller/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

编辑config.m4

# vim netkiller/config.m4
PHP_ARG_ENABLE(netkiller, whether to enable netkiller support,
Make sure that the comment is aligned:
[  --enable-netkiller           Enable netkiller support])

去掉上面三行前的dnl, dnl 表示注释

# cat config.m4 | grep -v 'dnl'

PHP_ARG_ENABLE(netkiller, whether to enable netkiller support,
Make sure that the comment is aligned:
[  --enable-netkiller           Enable netkiller support])

if test "$PHP_netkiller" != "no"; then

  PHP_NEW_EXTENSION(netkiller, netkiller.c, $ext_shared)
fi

执行 phpize

# cd netkiller
# /srv/php-5.4.8/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525

# ./configure --enable-netkiller --with-php-config=/srv/php-5.4.8/bin/php-config
# make
# make install

# ls modules/
netkiller.la  netkiller.so

创建 ini 文件

cat >> /srv/php/etc/conf.d/netkiller.ini <<PHP
extension=netkiller.so
PHP

确认扩展看装成功

# /srv/php/bin/php -f netkiller.php
Functions available in the test extension:
confirm_netkiller_compiled

Congratulations! You have successfully modified ext/netkiller/config.m4. Module netkiller is now compiled into PHP.

# /srv/php-5.4.8/bin/php -m | grep netkiller
netkiller

创建 php 测试程序

vim test.php

<?php
echo confirm_netkiller_compiled('netkiller');
phpinfo();

输出结果

Congratulations! You have successfully modified ext/netkiller/config.m4. Module netkiller is now compiled into PHP.

netkiller
---------------------------
netkiller support	enabled
时间: 2024-09-15 19:02:08

PHP Extension 扩展开发的相关文章

浅谈PHP Extension的开发——基础篇第1/2页

摘要&引言 PHP是当前应用非常广泛的一门语言,从国外的Facebook.Twitter到国内的淘宝.腾讯.百度再到互联网上林林总总的各种大中小型网站都能见到它的身影.PHP的成功,应该说很大程度上依赖于其开放的扩展API机制和丰富的扩展组件(PHP Extension),正是这些扩展组件使得PHP从各种数据库操作到XML.JSON.加密.文件处理.图形处理.Socket等领域无所不能.有时候开发人员可能需要开发自己的PHP扩展,当前PHP5的扩展机制是基于Zend API的,Zend API提

Chrome(谷歌)浏览器扩展开发初探

        FF(火狐)浏览器插件已经完成了,确实也很好用,但是有些同学不习惯使用ff浏览器,喜欢使用谷歌浏览器,点击这里查看上篇问题.那么我们就开发一个chrome的扩展,实现订餐功能.         在FF浏览器扩展中,我们使用xul定义FF的界面,使用javascript实现处理逻辑,在谷歌浏览器中,我们同样不需要学习activeX,也不需要学习com,只是使用html和javascript即可实现开发谷歌浏览器扩展的功能,只是为了简单起见,我们这次手动点击按钮,出发订餐操作.   

过滤分享的Chrome扩展开发详解

明确需求 扩展的功能在前文<眼不见为净--过滤人人网分享的chrome扩展>中已做了介绍:把人人网中一些带有"不分享就如何如何"等诅咒信息的标题给屏蔽掉,眼不见为净!描述得更详细些就是: 过滤功能只在人人网域名(http://*.renren.com/*)下启用: 只有访问人人网时,扩展的图标才显示: 好友的分享信息会出现在很多地方(如好友主页.新鲜事.分享主页等),这些都要过滤: 我只是不想看到那些讨厌的标题,但分享的视频.图片等还是想看的. 其中(4)是核心功能,(2)

浅谈PHP Extension的开发——基础篇第1/2页_php技巧

摘要&引言 PHP是当前应用非常广泛的一门语言,从国外的Facebook.Twitter到国内的淘宝.腾讯.百度再到互联网上林林总总的各种大中小型网站都能见到它的身影.PHP的成功,应该说很大程度上依赖于其开放的扩展API机制和丰富的扩展组件(PHP Extension),正是这些扩展组件使得PHP从各种数据库操作到XML.JSON.加密.文件处理.图形处理.Socket等领域无所不能.有时候开发人员可能需要开发自己的PHP扩展,当前PHP5的扩展机制是基于Zend API的,Zend API提

centos php扩展开发流程

原文:centos php扩展开发流程 一.安装php   centos 默认 yum 安装 php 版本为 5.3, 很多php框架基本上要求5.4以上版本,这时候不能直接 用 yum install php 需要先改yum 源. 1.启动REMI源 1 # cd /tmp 2 # wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 3 # wget http://mirrors.sohu.com/fedora-ep

php学习笔记之PHP扩展开发教程

我们先假设需要这样一个扩展,提供一个叫tao_string的函数,他的主要作用是返回一段字符.对应的PHP代码可能是这样:  代码如下 复制代码 function tao_string($str){ $result = $str: return $result; } 第一步,生成代码 PHP为了扩展开发的方便,提供了一个类似代码生成器的工具ext_skel,具体可以参见php.net官方的说明 (https://svn.php.net/repository/php/php-src/trunk/R

PHP扩展开发入门教程

 这篇文章主要介绍了PHP扩展开发入门教程,本文讲解了使用C语言在Linux系统下开发一个PHP扩展应该具备的最基本知识,需要的朋友可以参考下     PHP扩展开发 我准备在此系列博文中总结我有关PHP扩展开发的学习和感悟,力图简单清晰地描述在Linux系统下开发一个PHP扩展应该具备的最基本知识.水平较低,难免有错误,望指出. 准备工作 首先要获取一份PHP源码(可以从Github上签出,或者到官网上下载最新的稳定版),然后编译之.为了加快编译速度,我们推荐禁用所有额外的扩展(使用--dis

Firefox(火狐)浏览器扩展开发初探

        最近开发一个FF的扩展,自动完成公司的订餐操作,主要完成的功能很简单:登陆网站,执行一个特定操作,并在ff的状态栏内显示执行的成功或者失败的状态.以前没有写过FF扩展,需要从头学习,在完成这个扩展过程中,有些收获记录下来,一方面自己记录,另一方面也方便有此需求的同学.在整个开发过程中碰到一些问题,也走了一些弯路,希望对其他同学有所帮助.         由于是第一开发FF扩展,没什么经验,所以,第一步先去搜索些关于FF插件开发的文档.先几乎把所有关于FF插件开发的中文文档看个边,

chrome扩展开发其他地方调用sendmessage里的response

问题描述 chrome扩展开发其他地方调用sendmessage里的response var sysconfig={}; chrome.runtime.sendMessage({type : 'getload'}, function(response){ sysconfig=response.configs; console.log(sysconfig);//可以打印出来 }); console.log(system);///打印为空对象 background.js里是 case 'getloa