这个函数什么都不产生,有人知道为什么吗?
var_dump(shell_exec('netstat /?'));
exec(( 版本也有同样的问题。
但是这段代码效果很好
var_dump(shell_exec('dir /?));
尝试将-n
标志添加到命令中:
var_dump(shell_exec('netstat -n'));
更好的是,使用exec()
您还可以将命令的输出分配给数组:
exec('netstat -n', $output);
var_dump($output);
请参阅 https://www.php.net/manual/en/function.exec.php
带有/?
开关的netstat不会在标准输出(stdout(中打印,而是在标准错误(stderr(中打印。由于您的PHP代码没有进行任何安排来捕获stderr,因此您只能获得(空(标准输出。如果你从命令行运行PHP,你无论如何都应该看到stderr,但是如果你通过Web服务器运行PHP(我认为这里是这种情况(,那么stderr将被丢弃。但是,仅凭这一点并不能解释空白输出,因为 shell_exec(( 返回(强调我的(:
已执行命令的输出,如果发生错误或命令不生成输出,则
NULL
。
无论如何,如果您不想摆弄管道,您可以将 stderr 重定向到 stdout:
var_dump(shell_exec('netstat /? 2>&1'));