php 扩展dll
一、准备工作:
注:php5.2没有vc9,php5.3、php5.4没有vc6。呵呵。PHP5.5开始,不支持xp和win2003了,更是vc11了。---------------》所以,扩展5.2需要vc++6.0
1、下载php-5.2.17.tar(源码)
2、下载php-5.2.17-Win32-VC6-x86(需要用到它dev里的php5ts.lib) 二、修改过程 1、D:\php\php-5.2.17\ext\skeleton 复制一分重命名,包括里面的子文件名
2、把所有子文件里的extname替换为myfun,EXTNAME替换为MYFUN。(一定要严格区分大小写)如:
三、下面就进入到编码阶段:
1、打开php_skeleton.h文件(头文件),找到PHP_FUNCTION(confirm_myfun_compiled);,在 PHP_FUNCTION(confirm_myfun_compiled);,下面编写PHP_FUNCTION(mb_MessageBox);,声 明一个mb_MessageBox函数,此函数的作用仅是输出js弹出一个alert消息框,用于测试。
2、下面定义函数入口,打开myfun.c文件,找到PHP_FE(confirm_myfun_compiled,NULL) ;,在下面编写 PHP_FE(mb_MessageBox,NULL),此处注意一下,PHP_FE是定义的一个宏,所以后面不用加引号。
3、在myfun.c最后面编写函数的实体部分PHP_FUNCTION(mb_MessageBox):
PHP_FUNCTION(confirm_myfun_compiled)
{
char *arg = NULL;
int arg_len, len;
char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
} len = spprintf(&strg, , "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "myfun", arg);
RETURN_STRINGL(strg, len, );
}
/* }}} */
/* The previous line is meant for vim and emacs, so it can correctly fold and
unfold functions in source code. See the corresponding marks just before
function definition, where the functions purpose is also documented. Please
follow this convention for the convenience of others editing your code.
*/ /* __function_stubs_here__ */ /*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/ PHP_FUNCTION(mb_MessageBox)
{
char *arg = NULL;
int arg_len, len;
char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
} len = spprintf(&strg, , "<script>alert('%s')</script>",arg); //此处正是输入的js代码
RETURN_STRINGL(strg, len, );
}
四、到这代码书写就完成了,下面开始编译:
1、开始->运行,输入CMD,打开命令行窗口。
2、进入myfun的目录,输入 msdev myfun.dsp /MAKE "myfun - Win32 Release_TS",回车编译。
3、如果没有错误,在E:\php-5.2.17下会生成一个Release_TS文件夹,在里面就可以找到php_myfun.dll文件。
至此扩展dll开发完成,下面在php中进行测试:
4、把php_myfun.dll复制到原php目录中的ext文件夹内。
5、打开php.ini文件,添加当前dll的扩展 extension=php_myfun.dll
6、测试
7、重启IIS或apache,在网站目录下新建一文件,输入以下内容:
<?php
echo mb_MessageBox("测试PHP扩展DLL by 马犇");
//参考:http://www.cnblogs.com/madonion/articles/2272288.html ?>
php 扩展dll的更多相关文章
- MFC的规则DLL与扩展DLL
一.MFC规则DLL MFC规则DLL可以在该dll内部使用MFC,但是与应用程序的接口不能是MFC的.能够被所有支持dll的编程语言所写的应用程序使用,当然也包括使用MFC创建的应用程序.在 ...
- 【逆向知识】开发WinDBG扩展DLL
如何开发WinDbg扩展DLL WinDbg扩展DLL是一组导出的回调函数,用于实现用户定义的命令.以便从内存转储中提取特定的信息.扩展dll由调试器引擎加载,可以在执行用户模式或内核模式调试时提供自 ...
- 常规DLL与扩展DLL区别
1.常规DLL可以被各种程序(python,VB等)调用,扩展DLL只能被MFC程序调用.提供给外部使用的控件类只能用扩展DLL. 2.扩展DLL的入口函数是DllMain(),而常规DLL入口是继承 ...
- VC++:创建,调用MFC动态链接库(扩展DLL)
概述 DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类. 仓库的发展史经历了"无库" ---& ...
- 实现MFC扩展DLL中导出类和对话框
如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对 ...
- 使用C语言来扩展PHP,写PHP扩展dll
转自http://www.cnblogs.com/myths/archive/2011/11/28/2266593.html 以前写过一次PHP扩展DLL,那个是利用调用系统的COM口实现的扩展,与P ...
- windows下开发PHP扩展dll(无需Cygwin)
windows下开发php扩展网上很多资料都说需要Cygwin,其实完全可以不必安装该东东.没错,是可以在linux下生成骨架后拷到windos下来用,但是,如果没有linux环境呢?什么,装虚拟机? ...
- 破解EFCore扩展Dll --- Z.EntityFramework.Extensions.EFCore
安装 Z.EntityFramework.Extensions.EFCore Install-Package Z.EntityFramework.Extensions.EFCore -Version ...
- Tosca : 扩展dll动态语言 识别点击下拉, 识别成table
放到这 配置 重启 tosca command
随机推荐
- web应用防火墙 – 安全伞18.5.1免费版本发布
“Safe3 Web Application Firewall"是国内安全组织保护伞网络基于新一代Web安全技术开发的全方位企业Web信息安全产品.能有效扫描各种WebShell,同时也可以 ...
- virtual box ubuntu卡在开机光标
创建虚拟机的时候选择之前保存的虚拟机盘vdi文件,打开的时候卡在光标.原来是因为虚拟机是64位的,但是新建的时候只有32位的ubuntu可以选择就选择的32位. 解决办法: 在bios设置里,打开cp ...
- [办公自动化]无法使用江南天安usbkey 无法使用视频网站
同事打来电话说,无法使用江南天安开发的usbkey. 修复基本步骤记录如下: 1.卸载一切设备管理器中与之相关的驱动.拔出key. 2.重启计算机. 3.前往业务公开网站安装驱动. 4.插入key测试 ...
- [ZZ] D3D中的模板缓存(3)
http://www.cppblog.com/lovedday/archive/2008/03/25/45334.html http://www.cppblog.com/lovedday/ D3D中的 ...
- Grand Theft Auto V (侠盗列车手5)图形研究
原文地址:http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study/ 原文的简介: GTA(侠盗猎车)系列自从1997 ...
- razor 添加html5属性
在 HTML5 中, 可以使用 data- 属性来表示用户数据,这些数据甚至可以是 JSON 格式的数据,对 Web 前端开发带来很大的方便. 在 MVC 的 Razor 中,可以使用匿名对象来生成定 ...
- SET GLOBAL slow_query_log=1
- Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL SHOW VARIABLES LI ...
- Distinctive Image Features from Scale-Invariant
http://nichol.as/papers/Lowe/Distinctive Image Features from Scale-Invariant.pdf Abstract This paper ...
- java Semaphore
//Listing 6-4. Using a Counting Semaphore to Control Access to a Pool of Items import java.util.conc ...
- C++ 简单 Hash容器的实现
主要实现了以整数为关键字的hash,以key%m_nSize为哈希函数,以(hash(key)+i)%m_nSize重新寻址,并附带了elf_hash的实现,使用过程中可灵活修改. #ifndef _ ...