遇到个关于COM的问题

2012-12-12 15:16:33 +08:00
 jacy
用php做一个小项目,需要用到COM,发现同样的函数,用vbscript正常执行,而在php里却报错。搜索了好久,才知道COM不能在客户端(浏览器)执行,要在服务器端用php命令执行。试了下,果然。
现在问题来了,如果在服务器端执行命令,那么这项目基本达不到我的目的了,我就是想通过在web上的操作让服务器上的一些软件实现我的工作。
那么是php的安全问题,可以通过设置打开(但是搜索了很久无果,只发现一个com.allow_dcom,打开也不行),还是根本就实现不了在客户端上执行COM?
3311 次点击
所在节点    PHP
11 条回复
timonwong
2012-12-12 15:39:11 +08:00
vampirekiss
2012-12-12 15:43:08 +08:00
php是服务端脚本,所有调用都在发生在服务器上。
无法用php在客户端上调用COM组件
jacy
2012-12-12 15:43:44 +08:00
@timonwong How can I run COM object from remote server ?
Exactly like you run local objects. You only have to pass the IP of the remote machine as second parameter to the COM constructor.

Make sure that you have set com.allow_dcom=TRUE in your php.ini.

在php手册上找到这个,现在是没太明白COM的第二个参数server_name如何填写,和这个有关吗?
jacy
2012-12-12 15:44:51 +08:00
@vampirekiss 是在客户端调用服务端的COM。
timonwong
2012-12-12 15:49:09 +08:00
@jacy
你看得那个算是DCOM了。

主要看你是需要哪种。

1) COM宿主和PHP环境(Web)在同一台服务器
2) COM宿主在另外一台服务器,PHP(Web)一台服务器

如果是第一种情况,好所,COM Object直接操作即可,跟CreateObject, ActiveXObject操作差不多

第二种情况考虑就要多点,远程调用COM很累,基本上要在同一个域或局域网内才靠谱,我觉得你的需求不是这种情况。
vampirekiss
2012-12-12 15:50:48 +08:00
那直接根据析客户端发过来的数据,在服务端调用就好了。
调用方法正如 timonwong 所说
第二个参数如果是本机调用,你可以不填写,如果填写了。则表示你调用的COM服务是在另外一台机器上,这时候你需要填写这台机器的IP地址或机器名
timonwong
2012-12-12 15:54:57 +08:00
@jacy
客户端指的浏览器?
那直接调用COM与PHP无关,只浏览器有关(IE, VBScript, JScript,权限),另外internet上的DCOM不靠谱。
jacy
2012-12-12 16:00:46 +08:00
@timonwong COM在服务器上,php文件也在服务器上,现在只能通过在服务器上用命令行执行这个php,我用另外一台电脑通过浏览器访问这个php会报错,在服务器上用浏览器也会报错。我现在就想用浏览器执行。
@vampirekiss
vampirekiss
2012-12-12 16:05:41 +08:00
贴下错误信息
jacy
2012-12-12 16:28:44 +08:00
@vampirekiss Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in xxxxx.php:10 Stack trace: #0 D:\wwwroot\LocalUser\jacy\web\xunlei.php(10): com->CommitTasks2(1) #1 {main} thrown in D:\wwwroot\LocalUser\jacy\web\xunlei.php on line 10
vampirekiss
2012-12-12 16:36:23 +08:00
呃。居然是 Unknown
这个分析不出来了。
换种方式吧。 做个队列,在web上保存队列,然后在命令行下读队列跑吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/54720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX