V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jacy
V2EX  ›  PHP

遇到个关于COM的问题

  •  
  •   jacy · 2012-12-12 15:16:33 +08:00 · 3278 次点击
    这是一个创建于 4355 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用php做一个小项目,需要用到COM,发现同样的函数,用vbscript正常执行,而在php里却报错。搜索了好久,才知道COM不能在客户端(浏览器)执行,要在服务器端用php命令执行。试了下,果然。
    现在问题来了,如果在服务器端执行命令,那么这项目基本达不到我的目的了,我就是想通过在web上的操作让服务器上的一些软件实现我的工作。
    那么是php的安全问题,可以通过设置打开(但是搜索了很久无果,只发现一个com.allow_dcom,打开也不行),还是根本就实现不了在客户端上执行COM?
    11 条回复    1970-01-01 08:00:00 +08:00
    timonwong
        1
    timonwong  
       2012-12-12 15:39:11 +08:00
    vampirekiss
        2
    vampirekiss  
       2012-12-12 15:43:08 +08:00
    php是服务端脚本,所有调用都在发生在服务器上。
    无法用php在客户端上调用COM组件
    jacy
        3
    jacy  
    OP
       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
        4
    jacy  
    OP
       2012-12-12 15:44:51 +08:00
    @vampirekiss 是在客户端调用服务端的COM。
    timonwong
        5
    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
        6
    vampirekiss  
       2012-12-12 15:50:48 +08:00
    那直接根据析客户端发过来的数据,在服务端调用就好了。
    调用方法正如 timonwong 所说
    第二个参数如果是本机调用,你可以不填写,如果填写了。则表示你调用的COM服务是在另外一台机器上,这时候你需要填写这台机器的IP地址或机器名
    timonwong
        7
    timonwong  
       2012-12-12 15:54:57 +08:00
    @jacy
    客户端指的浏览器?
    那直接调用COM与PHP无关,只浏览器有关(IE, VBScript, JScript,权限),另外internet上的DCOM不靠谱。
    jacy
        8
    jacy  
    OP
       2012-12-12 16:00:46 +08:00
    @timonwong COM在服务器上,php文件也在服务器上,现在只能通过在服务器上用命令行执行这个php,我用另外一台电脑通过浏览器访问这个php会报错,在服务器上用浏览器也会报错。我现在就想用浏览器执行。
    @vampirekiss
    vampirekiss
        9
    vampirekiss  
       2012-12-12 16:05:41 +08:00
    贴下错误信息
    jacy
        10
    jacy  
    OP
       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
        11
    vampirekiss  
       2012-12-12 16:36:23 +08:00
    呃。居然是 Unknown
    这个分析不出来了。
    换种方式吧。 做个队列,在web上保存队列,然后在命令行下读队列跑吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1058 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:36 · PVG 06:36 · LAX 14:36 · JFK 17:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.