1

我从 php.net 网站得到这个。这与我在下面的代码中遇到的问题有关。谁能解释一下以下内容。我正在使用 Vista。在服务器上运行 Word 意味着什么?

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

此外,您应该查看 Microsoft Word 文档属性中的“身份”选项卡,并查看它是否设置为“交互式用户”

另外,以IUSR_帐户登录机器,启动word,并确保单击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;
    ?>
4

2 回答 2

2

当用户访问在您的服务器上运行的网页时(奇怪的是在 Vista 下运行 Web 服务器 - 这是一个开发环境吗?),Web 服务器软件(Microsoft Internet Information Systems,或 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 服务器,从而在下一次请求时完全重新加载它。

于 2010-03-25T05:39:31.380 回答
1

感谢您的回复。我通过使用这个解决了这个问题: http ://www.phpbuilder.net/columns/venkatesan20030501.php3 ?

于 2010-03-25T06:19:27.067 回答