Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xampp PHP创建COM对象无任何信息的致命错误_Php_Windows_Com_Xampp - Fatal编程技术网

Xampp PHP创建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应用程序遇到了问题。我正在构建一个服务应用程序,它应该连接到我们的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 instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
?>
现在我得到:

未能创建COM对象“word.application”:无效语法

我不明白怎么了。根据本文,不需要额外的参数,对吗

您是否尝试过在services.msc中授予Apache服务管理员权限?
不过,它要求您在运行它时使用的帐户上有密码。
希望这有帮助。

请确保将正确的COM权限设置为“此用户”

  • 运行:“dcomcnfg”
  • 展开:组件服务>计算机>我的计算机>DCOM配置
  • 选择:“Microsoft Word 97-2003文档”
  • 右键单击它并打开属性
  • 单击标识选项卡
  • 选择“此用户”,然后键入(管理员)用户的用户名和密码
  • 应用这些新设置并测试COM应用程序。现在应该可以用了
我希望我能为你们中的一些人节省很多很多时间的头痛:)

PHP设置

  • 在php.ini中启用COM扩展
extension=php\u com\u dotnet.dll

  • 重新启动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;