php扩展
来源:互联网 发布:淘宝手机主板可靠吗 编辑:程序博客网 时间:2024/04/30 14:06
安装好如下软件:
引用
1. VC++ 6
2. php二进制环境
3. Cygwin.
I. 下载php的源码包
下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有
源码。还有两个重要的文件:ext_skel , ext_skel_win32.php.
ext_skel是创建扩展的shell,在windows上无法运行,所以就必须要有Cygwin。
II. 建立php扩展骨架目录文件
如果你的cygwin没有安装在c:/cygwin,进入php源码包/ext目录下,修改ext_skel_win32.php :
$cygwin_path = 'c:/cygwin/bin';
修改为你的cygwin目录
$cygwin_path = 'd:/cygwin/bin';
命令行方式进入ext目录然后运行:
php ext_skel_win32.php –-extname=myhello
(当然,为了保证上面的命令行能正常运行,首先你得确保你的php目录在系统的环境变量里)
运行该命令后,有人发现下面的错误
引用
Warning: fopen(myhello/myhello.dsp): failed to open stream: No such file or directory in
D:/cygwin/php-5.2.6/ext/ext_skel_win32.php on line 45
Warning: fopen(myhello/myhello.php): failed to open stream: No such file or directory in
D:/cygwin/php-5.2.6/ext/ext_skel_win32.php on line 52
说明你的 cygwin 安装不完整。要是没报错你的myhello扩展就创建成功了。这就是一个简单的扩展框架
,用纯c语言编写。
III. 添加依赖的php5ts.lib
在php的二进制包中的 dev目录下将 php5ts.lib 拷到我们的myhello目录中, 否则编译将通不过。
IV. 添加hello c代码
生成的myhello目录中有关键文件包括
myhello.dsp,
myhello.c,
php_myhello.h,
其他文件暂时不必关心.
提示:切忌myhello目录不可以挪移出ext目录,否则会编译报缺少php.h.
1. 修改php_myhello.h
扩展的新函数: 在PHP_FUNCTION(confirm_myhello_compiled); 行后添加一行
C代码
PHP_FUNCTION(confirm_myhello_compiled);
PHP_FUNCTION(myhello); // 新增的行
PHP_FUNCTION(confirm_myhello_compiled);
PHP_FUNCTION(myhello); // 新增的行
2. 修改myhello.c
在PHP_FUNCTION(confirm_myhello_compiled) 后添加我们的新函数
C代码
PHP_FUNCTION(myhello){
php_printf(”Hello C extension”);
}
PHP_FUNCTION(myhello){
php_printf(”Hello C extension”);
}
在数组zend_function_entry myhello_functions[]增加一行
C代码
zend_function_entry myhello_functions[] = {
PHP_FE(confirm_myhello_compiled, NULL) /* For testing, remove later. */
PHP_FE(myhello, NULL) // 新增的行
{NULL, NULL, NULL} /* Must be the last line in myhello_functions[] */
};
zend_function_entry myhello_functions[] = {
PHP_FE(confirm_myhello_compiled, NULL) /* For testing, remove later. */
PHP_FE(myhello, NULL) // 新增的行
{NULL, NULL, NULL} /* Must be the last line in myhello_functions[] */
};
V. 构建DLL文件
用vc6打开我们的工程,就是myhello.dsp
1. 修改编译方式为release: 选择Build->Set Active Configuration设置默认编译方式为Release, 否
则会提示缺少php5ts_debug.lib ,其实就是php5ts.lib。
2. 按F5编译。会在ext上级的Release_TS目录下生成php_myhello.dll
提示:如果愿意使用命令行编译也是可以的,命令如下:
引用
msdev myhello/myhello.dsp /MAKE "myhello - Win32 Release_TS"
VI. 集成dll到php中。
1. 把我们生成的 php_myhello.dll放到二进制php环境的ext目录下.
2. 然后修改php.ini, 添加 extension=php_myhello.dll 重启apahce。
3. 新建c_test.php 内容为
Java代码
<?php myhello(); ?>
<?php myhello(); ?>
在浏览器里打开会看到页面:
引用
hello C extension.
- 扩展 PHP
- php 扩展
- php扩展
- php 扩展
- php扩展
- php扩展
- PHP扩展
- php扩展
- php ffmepg.php 扩展
- PHP扩展-php.ini
- PHP扩展开发-创建扩展
- 【PHP扩展】centos给PHP安装扩展
- php.ini配置PHP扩展
- php 如何添加php扩展
- php安装 php-exif 扩展
- 如何编写PHP扩展
- PHP扩展组件相关
- 用C++扩展PHP
- 查询表中所有的列名
- hibernte 批量Update and del
- 朋友之间的友情和距离
- 【每天读一点英文】gnuhpc注释版:The pleasure of reading
- 罗杰斯
- php扩展
- 卡特兰数的进栈与出栈,1的个数要大于0的个数,10与5元
- 如何管理员工
- oracle存储过程调用java类
- C++ Primer ------ 卷首语
- UDT协议-基于UDP的可靠数据传输协议
- MFC对话框中控件 添加右键响应
- 学习jQuery必须知道常用的几种方法
- Duplicated Code