当用户导航到页面时,我试图使网站向用户提供有关特定计算机的信息。我正在使用php 7.1。这不是面向外部的,并且在不重要的服务器上,因此安全性不是我现在所关心的。
我确保php.ini中的某些超时设置得到扩展,但是我可能错过了一些东西。我已经在服务器上的命令行中直接尝试了此命令,它已经起作用了。我已经尝试使用exec函数执行其他命令,并且它们已经起作用。我打开了display_errors,页面上没有错误出现,这只是一个空白屏幕。该页面很快完成加载:不到一秒钟。
这就是我要开始工作的页面上的全部内容
<?php
$dCommand1 = 'systeminfo/s *ipaddress* /u *administrator* /p *password* > %TEMP%\\sysinfo.txt';
$dCommand2 = 'type "%TEMP%\\sysinfo.txt"';
$dCommand3 = 'del "%TEMP%\\sysinfo.txt"';
exec($dCommand1);
$dOutput = array();
exec($dCommand2, $dOutput);
foreach($dOutput as &$dRow){
echo $dRow;
echo '<br>';
}
exec($dCommand3);
?>
什么在php中起作用:
echo exec('ipconfig');
echo exec('whoami');
在cmd中有效的方法:
systeminfo/s *ipaddress* /u *administrator* /p *password* > %TEMP%\\sysinfo.txt
type "%TEMP%\\sysinfo.txt"
del "%TEMP%\\sysinfo.txt"
我已打开display_errors,页面上没有错误出现,这只是一个空白屏幕。 谢谢您能提供的任何帮助。
我在命令中添加了2>&1,并且在尝试运行时出现以下错误
systeminfo/s *ipaddress* /u *administrator* /p *password* 2>&1
错误:用户名或密码不正确。
但是,密码和用户名正确,因为同一命令在命令行中起作用。
答案 0 :(得分:0)
无需将输出重定向到文件。摆脱重定向,直接读取结果。
$dCommand1 = 'systeminfo/s *ipaddress* /u *administrator* /p *password*';
exec($dCommand1, $dOutput);
foreach ($dOutput as $dRow) { // no need for &
echo "$dRow<br>";
}
答案 1 :(得分:0)
解决方案是使用域凭据。在服务器的命令行中,以某种方式,我可以使用我试图从中获取信息的计算机上的本地凭据,但是在php页面上,我必须使用域凭据来访问计算机。 / p>