2010-03-25 33 views
1

我从php.net网站得到了这个。这与我在下面的代码中遇到的问题有关。任何人都可以解释我以下的事情。我正在使用Vista。在服务器上运行Word意味着什么?在服务器上运行COM以使其工作?

为了得到这个词例子 运转,则在上 服务器端以下。为我工作... 1.单击开始 - >运行并输入“dcomcnfg” 2.在“应用程序”选项卡中,向下到“Microsoft Word文档” 3.单击属性按钮 4.转到“安全”选项卡 5.单击“使用自定义访问权限”,然后单击编辑 6.单击添加,然后单击显示用户 7.突出IIS匿名用户帐户(通常为IUSR_), 单击添加 8.转到单击“使用自定义启动权限”,然后单击编辑 10.单击添加,然后单击显示用户 11.突出显示IIS匿名用户帐户(通常为IUSR_), 点击添加 12.点击OK,然后点击APPLY。

此外,你应该看看在Microsoft Word中 文档属性的 “标识”标签,并认为它是 设置为“交互式用户”

此外,登录到机器的 IUSR_帐户,开始 单词,并确保通过 单击对话框Word显示 第一次运行某个 用户。换句话说,确保Word 对IUSR_用户干净地打开。

<?php 
    // starting word 
    $word = new COM("word.application") or die("Unable to instantiate Word"); 
    echo "Loaded Word, version {$word->Version}\n"; 

    //bring it to front 
    $word->Visible = 1; 

    //open an empty document 
    $word->Documents->Add(); 

    //do some weird stuff 
    $word->Selection->TypeText("This is a test..."); 
    $word->Documents[1]->SaveAs("Useless test.doc"); 


    //closing word 
    $word->Quit(); 

    //free the object 
    $word = null; 
    ?> 

回答

2

当用户访问您的服务器上运行的网页(奇在运行Vista下的Web服务器 - 这是一个开发环境),Web服务器软件(Microsoft Internet信息系统,或IIS )通过运行一个进程来响应这个请求(在你的情况下,PHP)。在Windows下,所有进程必须在用户帐户下运行。代码示例上面给出的说明详细说明如何授予IIS用户帐户权限以运行Microsoft Word。

有关启动Word的说明仅仅是故障排除 - 验证将要响应网页请求运行Word的用户是否确实可以启动Word。

代码加载提供Microsoft Word功能的COM服务器,添加一些文本并保存文档。之前的说明是必要的,因为由于Web服务器将在IIS用户帐户下运行PHP解释器,并且PHP启动Word COM服务器,所以IIS用户需要获得启动COM对象的权限。

至于含义的问题,我认为不存在任何安全隐患,只要您适当地清理和验证用户输入 - 使用Word在安全性方面的变化不大。但是,您有一个潜在的主要性能瓶颈。用于Word的COM服务器可能需要很长时间才能加载,并且如果在网页请求之间出现中断,COM系统可能会卸载Word COM服务器,导致它在下一个请求中完全重新加载。

相关问题