2017-03-08 4 views
0

リモートサーバーのdllファイルにあるCOMオブジェクトを実行するにはどうすればよいですか? php.net(http://php.net/manual/en/faq.com.php#faq.com.q8)によるとPHPのリモートサーバーでCOMオブジェクトを実行する方法

How can I run COM object from remote server ? Exactly like you run local objects. You only have to pass the IP of the remote machine as second parameter to the COM constructor.

Make sure that you have set com.allow_dcom=TRUE in your php.ini.

私は私のてcom.allow_dcom php.iniで有効とするphpinfoに応じて()しています。 COMサポート、DCOMサポート、.NETサポートが有効になっています。リモートオブジェクトを呼び出す方法の例を見つけるのが苦労しています。

DLLファイル(pcmsrv32.dll)は、リモートサーバーのC:\ Windowsにあります。 そのファイルに格納されているオブジェクトメソッドCalcDistance()にアクセスする必要があります。

私は、COMクラスにファイルの場所とIPを渡すために試してみました:

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

しかし、それは動作しません。

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

は、しかし私は、このエラーを与えること:|私のコードであることを接続して使用し、私もPC *マイラーのためのユーザガイドに与えられたプログラムIDを使用してみましたが

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

:私はこのエラーを取得します:

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

私は間違っていますか?

+0

[PHPのリモートサーバーにDLLをロードする方法](http://stackoverflow.com/questions/42660347/how-to-load-dll-stored-on-remote-server-in-php) ) – yivi

+0

私は私の問題を解決するために何か違うことを試みているので私は他の質問を削除しました。私はこれも同様に削除することになります。 –

答えて

0

私はPC *マイラーサポートと連絡を取得してしまった、と彼らは私に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 
?> 

EDIT を現在、PC * MilerはCOMオブジェクトのみをローカルで提供していると伝えられています。私が開発しているのと同じサーバーにインストールしない限り、これは動作しません。私たちは、PHPコードが置かれているサーバーと同じサーバーにバージョン30のPC * Milerをインストールし、その代わりに試しています。

UPDATE 我々はPC *マイラーのv.30が同じサーバーだけでなく、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 Mapsで正しいことを確認しました。

関連する問題