宝塔怎么开启php扩展

php扩展怎么写

1. 如何写php扩展

PHP取得成功的一个主要原因之一是她拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到。PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展。

扩展API的引入使PHP3取得了巨大的进展,扩展API机制使PHP开发社区很容易的开发出几十种扩展。现在,两个版本过去了,API仍然和PHP3时的非常相似。扩展主要的思想是:尽可能的从扩展编写者那里隐藏PHP的内部机制和脚本引擎本身,仅仅需要开发者熟悉API。

有两个理由需要自己编写PHP扩展。第一个理由是:PHP需要支持一项她还未支持的技术。这通常包括包裹一些现成的C函数库,以便提供PHP接口。例如,如果一个叫FooBase的数据库已推出市场,你需要建立一个PHP扩展帮助你从PHP里调用FooBase的C函数库。这个工作可能仅由一个人完成,然后被整个PHP社区共享(如果你愿意的话)。第二个不是很普遍的理由是:你需要从性能或功能的原因考虑来编写一些商业逻辑。

如果以上的两个理由都和你没什么关系,同时你感觉自己没有冒险精神,那么你可以跳过本章。

本章教你如何编写相对简单的PHP扩展,使用一部分扩展API函数。对于大多数打算开发自定义PHP扩展开发者而言,它含概了足够的资料。学习一门编程课程的最好方法之一就是动手做一些极其简单的例子,这些例子正是本章的线索。一旦你明白了基础的东西,你就可以在互联网上通过阅读文挡、原代码或参加邮件列表新闻组讨论来丰富自己。因此,本章集中在让你如何开始的话题。在UNIX下一个叫ext_skel的脚本被用于建立扩展的骨架,骨架信息从一个描述扩展接口的定义文件中取得。因此你需要利用UNIX来建立一个骨架。Windows开发者可以使用Windows ext_skel_win32.php代替ext_skel。

然而,本章关于用你开发的扩展编译PHP的指导仅涉及UNIX编译系统。本章中所有的对API的解释与UNIX和Windows下开发的扩展都有联系。

2. 如何编写一个PHP的C扩展

一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13#> cd /software/php-5.2.13/ext二、假设我们要开发一个名为caleng_module的扩展,该扩展包含两个函数:a--处理两个整型相加和b-处理字符串重复输出;1、首先编写一个函数定义文件,该文件编写函数原型后缀为def,假设为:caleng_module.defint a(int x, int y)string b(string str, int n)2、通过扩展骨架生成器,将在ext目录下自动建立扩展目录caleng_module#> ./ext_skel --extname=caleng_module --proto=caleng_module.def3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_module/config.m4,将如下行的注释标签"dnl"去掉,修改后如下所示:PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,Make sure that the comment is aligned:[ --enable-myfunctions Enable myfunctions support])4、完善函数a和b的功能: #> vim /software/php-5.2.13/ext/caleng_module/caleng_module.cPHP_FUNCTION(a){int x, y, z;int argc = ZEND_NUM_ARGS();if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)return;z = x + y;RETURN_LONG(z);}PHP_FUNCTION(b){char *str = NULL;int argc = ZEND_NUM_ARGS();int str_len;long n;char *result;char *ptr;int result_length;if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)return;result_length = str_len * n;result = (char *) emalloc(result_length + 1);ptr = result;while (n--) {memcpy(ptr, str, str_len);ptr += str_len;}*ptr = '\0';RETURN_STRINGL(result, result_length, 0);}三、编译安装,假设php的安装目录为:/usr/localhost/webserver/php#> cd /software/php-5.2.13/ext/caleng_module#> /usr/localhost/webserver/php/bin/phpize#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config#> make#> make install现在将在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目录下生成caleng_module.so文件在php.ini配置文件中加入: extension=caleng_module.so.搞定收工。

3. 如何编写一个独立的 PHP 扩展

一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13#> cd /software/php-5.2.13/ext二、假设我们要开发一个名为caleng_module的扩展,该扩展包含两个函数:a--处理两个整型相加和b-处理字符串重复输出;1、首先编写一个函数定义文件,该文件编写函数原型后缀为def,假设为:caleng_module.defint a(int x, int y)string b(string str, int n)2、通过扩展骨架生成器,将在ext目录下自动建立扩展目录caleng_module#> ./ext_skel --extname=caleng_module --proto=caleng_module.def3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_module/config.m4,将如下行的注释标签"dnl"去掉,修改后如下所示:PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,Make sure that the comment is aligned:[ --enable-myfunctions Enable myfunctions support])4、完善函数a和b的功能: #> vim /software/php-5.2.13/ext/caleng_module/caleng_module.cPHP_FUNCTION(a){int x, y, z;。

4. 如何用C语言编写PHP扩展的详解

1:预定义在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def内容是你希望定义的函数名以及参数:int a(int x,int y)string b(string str,int n)2:到php源码目录的ext目录#cd /usr/local/php-5.4.0/ext/执行命令,生成对应扩展目录#./ext_skel --extname=caleng_module --proto=/home/hm/caleng_module.def3:修改config.m4去掉dnl的注释 PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module support,Make sure that the comment is aligned:[ --enable-caleng_module Enable caleng_module support])4:修改caleng_module.c 代码如下: /* {{{ proto int a(int x, int y) */PHP_FUNCTION(a){ int argc = ZEND_NUM_ARGS(); int x; int y; int z; if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE) return;z=x+y; RETURN_LONG(z);}/* }}} *//* {{{ proto string b(string str, int n) */PHP_FUNCTION(b){ char *str = NULL; int argc = ZEND_NUM_ARGS(); int str_len; long n; char *result; char *ptr; int result_length; if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) return; result_length = str_len * n; result = (char *) emalloc(result_length + 1); ptr = result; while (n--) { memcpy(ptr, str, str_len); ptr += str_len; } *ptr = '\0'; RETURN_STRINGL(result, result_length, 0);}/* }}} */ 5:生成扩展库#cd ./caleng_module#/usr/local/php/bin/phpize#./configure --with-php-config=/usr/local/php/bin/php-config#make#make install 6:到php的对应extensions目录如上图所示#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/改目录下有生成的caleng_module.so文件7:修改php.iniphp.ini如果找不到可以从phpinfo()打出的信息看到#cd /usr/local/php/lib/php.ini增加扩展信息extension=caleng_module.so8:重启Apache# /usr/local/apache2/bin/apachectl restart9:检查加载 /usr/local/php/bin/php -m10:PHP调用 代码如下: echo a(1,2); 输出 3 就说明成功了!下面是原文Linux下用C开发PHP扩展一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13 一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13#> cd /software/php-5.2.13/ext二、假设我们要开发一个名为caleng_module的扩展,该扩展包含两个函数:a--处理两个整型相加和b-处理字符串重复输出;1、首先编写一个函数定义文件,该文件编写函数原型后缀为def,假设为:caleng_module.defint a(int x, int y)string b(string str, int n)2、通过扩展骨架生成器,将在ext目录下自动建立扩展目录caleng_module#> ./ext_skel --extname=caleng_module --proto=caleng_module.def3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_module/config.m4,将如下行的注释标签"dnl"去掉,修改后如下所示:PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,Make sure that the comment is aligned:[ --enable-myfunctions Enable myfunctions support])4、完善函数a和b的功能: #> vim /software/php-5.2.13/ext/caleng_module/caleng_module.cPHP_FUNCTION(a){ int x, y, z; int argc = ZEND_NUM_ARGS(); if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE) return; z = x + y; RETURN_LONG(z);}PHP_FUNCTION(b){ char *str = NULL; int argc = ZEND_NUM_ARGS(); int str_len; long n; char *result; char *ptr; int result_length; if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE) return; result_length = str_len * n; result = (char *) emalloc(result_length + 1); ptr = result; while (n--) { memcpy(ptr, str, str_len); ptr += str_len; } *ptr = '\0'; RETURN_STRINGL(result, result_length, 0);}三、编译安装,假设php的安装目录为:/usr/localhost/webserver/php#> cd /software/php-5.2.13/ext/caleng_module#> /usr/localhost/webserver/php/bin/phpize#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config#> make#> make install现在将在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目录下生成caleng_module.so文件在php.ini配置文件中加入: extension=caleng_module.so.。

5. windows上用c写php扩展怎么解决

如何使用C语言开发PHP扩展。

函数功能:php里面的整数是有符号数,其内部实现其实就是long,不是unsigned long。对于32位机器来说,php最大能表示的整数就是2^31-1了,一般在应用中碰到大于2^31-1而小于2^32的数就只能用字符串来表示了。

对于mixed int_ext(string in)来说,如果字符串in表示的整数小于2^31-1,那么就返回整数,如果大于就返回字符串。 开发扩展步骤如下:(首先需要下载php的源码,这里下载的是php-5.3.14) 1,建立扩展骨架 [plain] view plaincopyprint? 01.cd php-5.3.14/ext 02../ext_skel --extname=int_ext cd php-5.3.14/ext ./ext_skel --extname=int_ext 2,修改编译参数。

php扩展怎么写

转载请注明出处育才学习网 » 宝塔怎么开启php扩展

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21434)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10450)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9528)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7769)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9609)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(8012)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(8006)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(7009)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6541)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7122)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5406)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5834)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6519)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5428)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7592)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及