遇到个关于COM的问题 - V2EX
jacy
V2EX    PHP

遇到个关于COM的问题

  •  
  •   jacy Dec 12, 2012 3999 views
    This topic created in 4900 days ago, the information mentioned may be changed or developed.
    用php做一个小项目,需要用到COM,发现同样的函数,用Vbscript正常执行,而在php里却报错。搜索了好久,才知道COM不能在客户端(浏览器)执行,要在服务器端用php命令执行。试了下,果然。
    现在问题来了,如果在服务器端执行命令,那么这项目基本达不到我的目的了,我就是想通过在web上的操作让服务器上的一些软件实现我的工作。
    那么是php的安全问题,可以通过设置打开(但是搜索了很久无果,只发现一个com.allow_dcom,打开也不行),还是根本就实现不了在客户端上执行COM?
    11 replies    1970-01-01 08:00:00 +08:00
    timonwong
        1
    timonwong  
       Dec 12, 2012
    vampirekiss
        2
    vampirekiss  
       Dec 12, 2012
    php是服务端脚本,所有调用都在发生在服务器上。
    无法用php在客户端上调用COM组件
    jacy
        3
    jacy  
    OP
       Dec 12, 2012
    @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
        4
    jacy  
    OP
       Dec 12, 2012
    @vampirekiss 是在客户端调用服务端的COM。
    timonwong
        5
    timonwong  
       Dec 12, 2012
    @jacy
    你看得那个算是DCOM了。

    主要看你是需要哪种。

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

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

    第二种情况考虑就要多点,远程调用COM很累,基本上要在同一个域或局域网内才靠谱,我觉得你的需求不是这种情况。
    vampirekiss
        6
    vampirekiss  
       Dec 12, 2012
    那直接根据析客户端发过来的数据,在服务端调用就好了。
    调用方法正如 timonwong 所说
    第二个参数如果是本机调用,你可以不填写,如果填写了。则表示你调用的COM服务是在另外一台机器上,这时候你需要填写这台机器的IP地址或机器名
    timonwong
        7
    timonwong  
       Dec 12, 2012
    @jacy
    客户端指的浏览器?
    那直接调用COM与PHP无关,只浏览器有关(IE, Vbscript, JScript,权限),另外internet上的DCOM不靠谱。
    jacy
        8
    jacy  
    OP
       Dec 12, 2012
    @timonwong COM在服务器上,php文件也在服务器上,现在只能通过在服务器上用命令行执行这个php,我用另外一台电脑通过浏览器访问这个php会报错,在服务器上用浏览器也会报错。我现在就想用浏览器执行。
    @vampirekiss
    vampirekiss
        9
    vampirekiss  
       Dec 12, 2012
    贴下错误信息
    jacy
        10
    jacy  
    OP
       Dec 12, 2012
    @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
        11
    vampirekiss  
       Dec 12, 2012
    呃。居然是 Unknown
    这个分析不出来了。
    换种方式吧。 做个队列,在web上保存队列,然后在命令行下读队列跑吧。
    About     Help     Advertise     Blog     API     FAQ     Solana     988 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 22:24 PVG 06:24 LAX 15:24 JFK 18:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86