gpt4 book ai didi

php - 无法将远程 Openfiles.exe 数据拉入 PHP

转载 作者:可可西里 更新时间:2023-11-01 09:25:32 29 4
gpt4 key购买 nike

我正在尝试使用 openfiles.exe 获取远程服务器上当前打开的文件的信息。我可以从网络服务器打开的命令提示符运行命令,所以我知道它在网络服务器和我试图定位的服务器之间工作。但是,当我尝试在 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 在执行相同操作时似乎有问题...

最佳答案

您的 Apache 服务器在错误的帐户下运行,并且没有远程 IPC$ 共享的权限;)

编辑 - 完整帖子:

可能是权限? Apache 以什么用户身份运行?当您从命令提示符执行此操作时,您大概是作为域管理员帐户或其他具有连接到远程计算机上的 IPC$ 共享的正确权限的帐户(IIRC 就是这样完成的) ).而 Apache 可能不会,当实际发生的事情是它无法联系 IPC$ 共享并假定远程计算机没有 Windows XP 或更高版本时,它可能只是一个误导性的错误消息...

看起来像在 XP 版本的 openfiles 上,有/u 和/p 选项来传递用户名和密码;将域管理员凭据粘贴在那里进行测试,看看是否有效。如果是这样,请创建一个没有文件存储权限的受限 AD 帐户并使用这些凭据或其他东西,以确保没有人可以窃取您的主域管理员帐户。

关于php - 无法将远程 Openfiles.exe 数据拉入 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12527123/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com