Xampp PHP创建COM对象无任何信息的致命错误
我的php应用程序遇到了问题。我正在构建一个服务应用程序,它应该连接到我们的ERP(selectline) 但我无法创建COM对象。此代码:Xampp PHP创建COM对象无任何信息的致命错误,php,windows,com,xampp,Php,Windows,Com,Xampp,我的php应用程序遇到了问题。我正在构建一个服务应用程序,它应该连接到我们的ERP(selectline) 但我无法创建COM对象。此代码: <?PHP error_reporting(E_ALL); session_start(); date_default_timezone_set('Europe/Zurich'); echo time(); $obj = new COM("fd6c8b29-e936-4a61-8da6-b0c12ad3ba00") or die("Unable to
<?PHP
error_reporting(E_ALL);
session_start();
date_default_timezone_set('Europe/Zurich');
echo time();
$obj = new COM("fd6c8b29-e936-4a61-8da6-b0c12ad3ba00") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
?>
现在我得到:
未能创建COM对象“word.application”:无效语法
我不明白怎么了。根据本文,不需要额外的参数,对吗 您是否尝试过在services.msc中授予Apache服务管理员权限?
不过,它要求您在运行它时使用的帐户上有密码。
希望这有帮助。请确保将正确的COM权限设置为“此用户”
- 运行:“dcomcnfg”
- 展开:组件服务>计算机>我的计算机>DCOM配置
- 选择:“Microsoft Word 97-2003文档”
- 右键单击它并打开属性
- 单击标识选项卡李>
- 选择“此用户”,然后键入(管理员)用户的用户名和密码
- 应用这些新设置并测试COM应用程序。现在应该可以用了
- 在php.ini中启用COM扩展
- 重新启动Apache
<?php
try {
$word = new COM("word.application");
} catch (Exception $ex) {
echo $ex->getMessage();
exit;
}
$word->Screenupdating = true;
$word->WindowState = 2;
$word->Visible = 0;
$word->CheckLanguage = false;
$word->Options->Overtype = false;
$word->Options->SaveInterval = 0;
$word->Assistant->Visible = false;
$word->DisplayAlerts = false;
// Do fancy stuff...
// Close word
$word->Quit();
$word = null;
Word不是为在服务器环境中运行而设计的。即使您解决了这个问题,您也会遇到许多其他问题。您的服务器中是否安装了Word?php.ini中是否启用了extension=php\u com\u dotnet.dll?@espino316 Ms Word安装在我的服务器中&&extension=php\u com\u dotnet.dll在php.ini中启用。原来问题是组件服务(COM)是32位的,而这些服务器中的默认php是64位的。问题的答案是将32位COM服务注册为64位,我找到了2008服务器的解决方案我尝试了2012服务器的相同解决方案,但它不起作用。
<?php
try {
$word = new COM("word.application");
} catch (Exception $ex) {
echo $ex->getMessage();
exit;
}
$word->Screenupdating = true;
$word->WindowState = 2;
$word->Visible = 0;
$word->CheckLanguage = false;
$word->Options->Overtype = false;
$word->Options->SaveInterval = 0;
$word->Assistant->Visible = false;
$word->DisplayAlerts = false;
// Do fancy stuff...
// Close word
$word->Quit();
$word = null;