PHP system()适用于某些命令,但不适用于所有

时间:2016-06-08 15:28:40

标签: php gcc

我在Raspberry Pi B +上托管了一个Web服务器,运行Raspbian。我总是有一个我可以使用的php“shell”,但似乎我可能会以某种方式搞砸了。它是一个带有name="phptorun"的html textarea,而动作文件只是eval($_POST['phptorun']);

由于我的RPi藏在没有显示器的桌子下,我使用手机很多来访问命令行。

我的问题:

当我运行system("ls");之类的东西时,我会得到输出并显示工作目录的内容。我正在使用C“编译器”(它只使用命令行gcc)但是当我做system("gcc");时 我根本没有输出。我知道命令gcc确实输出了输出,因为我之前在另一台计算机上完成了它。

那么为什么system("gcc");无效?

如果没有安装gcc,我不会输出,只是一个错误?

1 个答案:

答案 0 :(得分:1)

您需要获取更多信息,gcc可能会向STDERR输出一些内容,例如,当您使用system时,您会丢失这些信息功能

最好尝试使用exec函数:

 exec("gcc 2>&1", $output, $return_code);

说明:

  • gcc 2>&1STDERR输出重定向到STDOUT
  • STDOUT被捕获到$output变量
  • 命令返回代码位于变量$return_code
相关问题