Xampp PHP创建COM对象致命错误,没有任何信息

时间:2014-01-28 12:45:02

标签: php windows com xampp

我的php应用程序遇到了问题。我正在建立一个应该连接到我们的ERP(选择线)的服务应用程序。

但是我无法创建一个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";
?>

返回我:

  

致命错误:第21行的C:\ xampp \ htdocs \ com.php

我有两种环境:

Server 2008 R2 + Xampp v3.1.0 | PHP 5.4.7

Server 2012 R2 + Xampp v3.1.0 | PHP 5.4.7

我不得不在php.ini中添加php_com_dotnet.dll,因为之前找不到COM类。

由于我是COM的新手,我不知道在哪里搜索失败。

愿你们帮助我。

提前致谢

我改变了我的代码:

try {
$obj = new COM("word.application") or die("Unable to instantiate Word");
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}

现在我明白了:

  

无法创建COM对象`word.application':语法无效

我没有弄错。根据这篇文章http://www.php.net/manual/en/class.com.php,不需要额外的参数,对吧?

2 个答案:

答案 0 :(得分:1)

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

  • 运行:“dcomcnfg”
  • 展开:组件服务&gt;电脑&gt;我的电脑&gt; DCOM配置。
  • 选择:“Microsoft Word 97-2003文档”
  • 右键单击它并打开属性
  • 单击“标识”选项卡。
  • 选择“此用户”,然后输入(管理员)用户的用户名和密码。
  • 应用这些新设置并测试您的COM应用程序。它现在应该可以正常工作。

我希望我能为你们中的一些人节省大量的时间:)

PHP设置

  • 在php.ini中启用COM扩展
  

延长= php_com_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;

答案 1 :(得分:0)

您是否尝试在 services.msc 中提供 Apache 服务管理员权限?
但是,您需要在用于运行帐户的帐户上设置密码。 希望有所帮助..