【问题标题】:How to run COM objects on a remote server in PHP如何使用 PHP 在远程服务器上运行 COM 对象
【发布时间】:2017-07-29 11:45:41
【问题描述】:

如何在远程服务器上运行位于 dll 文件中的 COM 对象?

根据php.net(http://php.net/manual/en/faq.com.php#faq.com.q8):

如何从远程服务器运行 COM 对象?就像你跑步一样 本地对象。您只需将远程机器的 IP 传递为 COM 构造函数的第二个参数。

确保您在 php.ini 中设置了 com.allow_dcom=TRUE。

我在我的 php.ini 中启用了 com.allow_dcom 并根据 phpinfo();事实上,我确实启用了 COM 支持、DCOM 支持和 .NET 支持。我很难找到如何调用远程对象的示例。

DLL 文件 (pcmsrv32.dll) 位于远程服务器上的 C:\Windows 中。 我需要访问存储在该文件中的对象方法 CalcDistance()。

我已尝试将文件位置和 IP 传递给 COM 类:

$obj = new COM("C:\Windows\PCMSRV32.DLL","10.86.0.21");

但这不起作用。我收到此错误:

Fatal error: Uncaught com_exception: Failed to create COM object `C:\Windows\PCMSRV32.DLL': Moniker cannot open file in C:\Users\...\index.php:33

我也尝试使用 PC*Miler|Connect 用户指南中给出的 ProgID 并在我的代码中使用它:

$com = new COM("PCMServer.PCMServer.1","10.86.0.21");

但是这给了我这个错误:

com_exception: Failed to create COM object `PCMServer.PCMServer.1': Invalid syntax 

我做错了什么?

【问题讨论】:

标签: php oop dll com remote-server


【解决方案1】:

我最终与 PC*Miler 支持取得了联系,他们给了我一个示例代码,用于进行可以作为 CLI 脚本运行的基本调用:

<?php 
  // Create COM Object 
  $pcms = new COM("PCMServer.PCMServer"); 
  // Calculate 
  $dist = $pcms->CalcDistance("12345","23456"); 
  // Returned distance is a INT that needs to be divided by 10 (or the number of decimal places specified in the PCMSServe.ini file located in C:\Windows 
  $properDist = ($dist/10); 

  echo $properDist 
?>

编辑 我现在被告知 PC*Miler 只在本地提供他们的 COM 对象。因此,除非我将它安装在我正在开发的同一台服务器上,否则这是行不通的。我们正在将版本 30 的 PC*Miler 安装到我的 PHP 代码所在的同一台服务器上,并改为尝试。

更新 我们在同一台服务器上安装了 v.30 的 PC*Miler,以及修复 php 错误的补丁,我能够成功运行以下代码:

try {
    $pcms = new COM("PCMServer.PCMServer");
}
catch (com_exception $e) {
    print $e . "\n";
}
// Calculate
$dist = $pcms->CalcDistance("Goodyear, AZ","Las Vegas, NV");
$properDist = ($dist/10);
echo $properDist;

$properDist 的输出为 288 英里 - 我使用 Google 地图验证了这一点。

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2016-10-25
    • 2020-03-28
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    相关资源
    最近更新 更多