如何用C语言编写PHP扩展的详细说明

1:预定
在主目录,你也可以有其他任意目录写文件,如caleng_module.def
内容是要定义的函数名和参数:
int(int x,int y)
字符串b(字符串STR,int n)

2:指向PHP源目录的外接目录。
# CD / usr / / /当地php-5.4.0 EXT /

执行命令生成相应的扩展目录
#。 / ext_skel -- extname = caleng_module --原= / / / caleng_module.def家

3:修改config.m4
注释如下

php_arg_enable(caleng_module,是否启用caleng_module支持,
确保注释是对齐的:
{——enable-caleng_module使caleng_module支持})

4:修改caleng_module C。
复制代码代码如下所示:
原型int(int,x,int)
* /
php_function(一)
{
int argc = zend_num_args();
int x;
y;
Int z;
如果(zend_parse_parameters(argc tsrmls_cc,我

返回;
z=y;
return_long(Z);
}

原型字符串B(String,STR,int)
* /
php_function(B)
{
char = null;
int argc = zend_num_args();
国际str_len;
长n;
char *结果;
char的指针;
国际result_length;

如果(zend_parse_parameters(argc tsrmls_cc,SL
返回;
result_length = str_len×n;
结果=(char *)emalloc(result_length + 1);
ptr =结果;
而(n){
Memcpy(PTR,STR,str_len);
str_len ptr =;
}
* ptr = 0;
return_stringl(结果,result_length,0);
}


5:生成扩展库
# / caleng_module CD。
# / usr / / / PHP本地bin / phpize
#。 /配置PHP配置= / usr / / / PHP本地bin / PHP配置
#使
#安装



6:相应的扩展目录到PHP
如上图所示
# CD / usr / / / lib本地PHP PHP / / / /扩展no-debug-non-zts-20100525
有一个生成的caleng_module.so文件修改的目录

7:修改php.ini
Php.ini,如果你找不到的信息,可以从phpinfo()
# CD / usr / / / lib本地PHP /
Php.ini增加扩展信息
caleng_module.so延伸=

8:重新启动Apache
# / usr / / /当地Apache2 bin / apachectl重启

9:检查加载
/ usr / / / PHP本地bin / PHP - M

10:PHP调用
复制代码代码如下所示:
回声A(1,2);

输出3显示成功!
=================================
以下是原文
在linux下用C开发PHP扩展
首先,下载PHP源码包,假设源码包目录: / / php-5.2.13软件
首先,下载PHP源码包,假设源码包目录: / / php-5.2.13软件
# >光盘 / / /分机php-5.2.13软件
二,假设我们想开发一个名为caleng_module,其中包含两个功能:一个手柄两整数加法和B处理字符串重复输出。
1。首先,写一个函数定义文件,并写入函数原型后缀DEF,假设:caleng_module.def
int(int x,int y)
字符串b(字符串STR,int n)
2。通过扩展的骨架发生器,扩展目录caleng_module将自动设置在ext目录
# >。 / ext_skel -- extname = caleng_module --原= caleng_module.def
3,修改配置文件:vim /软件/ php-5.2.13 /分机/ caleng_module / config.m4 # >,为下行注释标签和删除,修改如下:
php_arg_enable(myfunctions,是否启用myfunctions支持,
确保注释是对齐的:
{——使myfunctions使myfunctions支持})
4、提高A和B的功能:vim /软件/ php-5.2.13 / / / caleng_module Ext caleng_module。C # >
php_function(一)
{
int,y,z;

int argc = zend_num_args();

如果(zend_parse_parameters(argc tsrmls_cc,我
返回;
z=y;
return_long(Z);
}
php_function(B)
{
char = null;
int argc = zend_num_args();
国际str_len;
长n;
char *结果;
char的指针;
国际result_length;

如果(zend_parse_parameters(argc tsrmls_cc,SL
返回;
result_length = str_len×n;
结果=(char *)emalloc(result_length + 1);
ptr =结果;
而(n){
Memcpy(PTR,STR,str_len);
str_len ptr =;
}
* ptr = 0;
return_stringl(结果,result_length,0);
}
三、编译和安装,如果PHP的安装目录: / / / usr / PHP本地服务器
# >光盘 / / /软件php-5.2.13 EXT / caleng_module
# > / usr /本地/网络服务器 / /斌/ phpize PHP
# >。 /配置PHP配置= / usr / / / PHP本地服务器/斌/ PHP配置
# >使
# >安装
的caleng_module.so文件现在将产生的 / usr /本地/网络服务器 / / / PHP PHP库 /扩展/ no-debug-non-zts-20060613目录
添加到php.ini配置文件:扩展= caleng_module.so。
修复它