我正在尝试使用 openfiles.exe 来获取远程服务器上当前打开的文件的信息。我可以从命令提示符运行 web 服务器已打开的命令,所以我知道它在 web 服务器和我试图定位的服务器之间工作。但是,当我尝试在 PHP 中调用相同的命令时,我得到一个 Apache 错误日志条目:“错误:目标系统必须运行 Windows XP 或更高版本。” 网络服务器在 Xp Pro 上运行,目标服务器在 Windows Server 2003 上。从命令提示符下,该命令完美运行,即使对于网络上较旧的 Windows 2000 服务器,只是当我从 PHP 运行它时,它似乎有一个问题。有没有人对为什么和/或如何解决这个问题有任何想法?
我正在使用的代码是:
$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 在做同样的事情时似乎有问题......