php com exception,php通过COM类调用组件的实现代...-关于IIS php调用com组件的权限...-Uncaught exception com_exception with ...

在PHP 4.2.0 至 4.2.3中,可以使用w32api_register_function 函数调用外部的DLL,前提是需要在php.ini中打开扩展的php_w32api.dll。

如果使用的是PHP 5,调用DLL只有使用PHP的COM类了。

基本方法为:$obj = new COM("server.object")

显然COM类将php功能又提高了一大截。同时这个类将组件的PO调用方法改成了OO方法。

在使用COM类之前,确保下面3个条件:

1.启用组件:regsvr32 组件dll

2. 允许调用COM:php.ini中com.allow_dcom =true

3. 账户有权限访问组件

然后就可以直接使用php的com函数调用它了

$obj = new COM("ABC.MyObj"); //一般前边是主文件名、后边是类名,注册表里找这个文件可以找到

这样就生成了一个叫obj的对象,我们就可以用它的属性和方法来操作了

$obj->MyAttr='123';

$obj->SerAttr('str',0);

===================================================================================

一些例子:

代码如下:

$phpwsh=new COM("Wscript.Shell") or die("Create Wscript.Shell Failed!");

$phpexec=$phpwsh->exec("cmd.exe /c $cmd");

$execoutput=$wshexec->stdout();

$result=$execoutput->readall();

echo $result;

?>

$obj = new COM("server.object")

即可以使用COM对象的属性和方法。

下面以word为例

// 启动 word

$word = new COM("word.application") or die("Unable to instanciate Word");

print "ioaded Word, version {$word->Version}\n";

//将其置前

$word->Visible = 1;

//打开一个空文档

$word->Documents->Add();

//随便做些事情

$word->Selection->TypeText("This is a test...");

$word->Documents[1]->SaveAs("Useless test.doc");

//关闭 word

$word->Quit();

//释放对象

$word->Release();

$word = null;

?>

$com=new COM('Scripting.FileSystemObject'); // FSO要使用绝对路径的

$file=$com ->getfile(__FILE__); //绝对路径

$file ->attributes='6'; //修改属性为系统、隐藏

//常数 值 描述

//Normal 0 普通文件。不设置属性。

//ReadOnly 1 只读文件。属性为读/写。

//Hidden 2 隐藏文件。属性为读/写。

//System 4 系统文件。属性为读/写。

//Volume 8 磁盘驱动器卷标。属性为只读。

//Directory 16 文件夹或目录。属性为只读。

//Archive 32 文件在上次备份后已经修改。属性为读/写。

//Alias 64 链接或者快捷方式。属性为只读。

//Compressed 128 压缩文件。属性为只读。

?>

PHP隐藏文件的方法就是上面的代码了。

代码如下:

//这个就可以实现asp的XMLHTTP传马功能

$xmlhttp=new COM('Microsoft.XMLHTTP') or die("Create Microsoft.XMLHTTP Failed!");

$xmlhttp->open('GET','http://localhost/1.txt',false);

$xmlhttp->send();

echo $xmlhttp->responseText;

/*

XMLHTTP方法

Open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)

bstrMethod: 数据传送方式,即GET或POST。

bstrUrl: 服务网页的URL。

varAsync: 是否同步执行。缺省为True,即异步执行。False,为同步执行。

bstrUser: 用户名,可省略。

bstrPassword:用户口令,可省略。

Send(varBody)

varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。

setRequestHeader(bstrHeader, bstrvalue)

bstrHeader:HTTP 头(header)

bstrvalue: HTTP 头(header)的值   如果Open方法定义为POST,可以定义表单方式上传:

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

XMLHTTP属性

onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。

responseBody: 结果返回为无符号整数数组。

responseStream: 结果返回为IStream流。

responseText : 结果返回为字符串。

responseXML: 结果返回为XML格式数据。

*/

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值