openfiles.exe を使用して、リモート サーバーで現在開いているファイルの情報を取得しようとしています。Web サーバーがオンになっているコマンド プロンプトからコマンドを実行できるので、Web サーバーとターゲットにしようとしているサーバーの間で機能することがわかります。しかし、PHP で同じコマンドを呼び出そうとすると、「エラー: ターゲット システムは Windows XP 以降を実行している必要があります」という Apache エラー ログ エントリが表示されます。Web サーバーは Xp Pro で実行されており、ターゲット サーバーは Windows Server 2003 で実行されています。コマンド プロンプトからコマンドは問題なく実行され、ネットワーク上の古い Windows 2000 サーバーに対しても問題なく実行されます。問題。これを回避する理由および/または方法について誰か考えがありますか?
私が使用しているコードは次のとおりです。
$output = shell_exec("openfiles /query /s servername");
echo $output;
$i = 0;
$c = count($output);
while ($i < $c) {
$dump = $output[$i];
echo $dump ."<br>";
$i++;
}
shell_exec()、system()、および exec() はすべて、バッチ ファイルからコマンドを実行する場合とまったく同じように動作します。少し興味深いのは、「/s servername」の部分を削除すると、次のように出力されることです。
Files Opened Remotely via local share points:
---------------------------------------------
INFO: No shared open files found.
... /s フラグがスローされているかのようです。私が言うように、コマンド プロンプトからは正常に動作するので、実行可能ファイルがターゲット サーバーから情報を取得できることがわかっています。なぜPHPが同じことをするのに問題があるように見えるのかを知る必要があります...