PHP 5.4.16 COM可以创建/保存新的Word文件,在打开现有文件时挂起

时间:2014-01-17 19:08:44

标签: php windows-7 com ms-word

Windows 7 Professional x64 - WAMP Server 2.4

Apache Version(x32):2.4.4

PHP版本(x32):5.4.16

Office 2003 - 与旧服务器版本相同

我有一个遗留程序,它读取共享驱动器上的本地.doc文件,将内容插入书签,然后在将这些文件转换为.pdf并通过电子邮件发送给我们的客户之前保存这些文件。在其他任何人告诉我之前,I am VERY AWARE that this is not a recommended or supported way to do things.只需要让这些遗留代码在新硬件上工作,这样我就可以完成一个新软件的工作,最终将取代它并避免COM脚本。

最近,运行此软件的服务器变得无法忍受。我们正在设置一个新的服务器来移动它,但我在新环境中遇到了一个显示停止的关键错误:

以下代码工作且没有任何问题:

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

$word->Visible = 0;

//open an empty document
$word->Documents->Add();
$word->Selection->TypeText("This is a test...");
$word->ActiveDocument->saveAs('C:\test.doc');

echo "File saved\n";

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

//free the object
$word = null;

echo "Word closed\n";

以下代码永远挂起,永远不会超过$ word-> Documents-> Open();线。

// 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 = 0;

$word->Documents->Open('C:\test.doc') or die ('Could not open file');

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

//free the object
$word = null;

echo "Word closed\n";

请帮助!看到PHP / COM可以创建一个新文件并保存它让我觉得这是可能的,但是有一些权限问题隐藏在幕后,阻止Word打开现有文件。

1 个答案:

答案 0 :(得分:1)

Apache服务需要1个窗口帐户才能启动它。 很简单,你需要通过命令来启动apache来测试。