【发布时间】:2014-02-19 18:28:13
【问题描述】:
我的 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";
?>
返回我:
致命错误:在第 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 不需要额外的参数,对吧?
【问题讨论】:
-
Word 不是为在服务器环境中运行而设计的。即使你解决了这个问题,你也会遇到许多其他问题。
-
您的服务器中是否安装了 Word? php.ini 中是否启用了 extension=php_com_dotnet.dll?
-
@espino316 Ms Word 安装在我的服务器中 && extension=php_com_dotnet.dll 在 php.ini 中启用。原来问题是组件服务(COM)是 32 位的,而这些服务器中的默认 php 是 64 位的。问题的答案link 是将 32 位 COM 服务注册为 64,我找到了 2008 服务器的解决方案,我为 2012 服务器尝试了相同的解决方案,但它不起作用。