【问题标题】:System output not displaying in web browser php系统输出未在 Web 浏览器 php 中显示
【发布时间】:2013-01-25 06:24:53
【问题描述】:

我有一个在终端中测试过的命令,它工作正常,但是当我在脚本中调用该命令以在浏览器上显示输出时,它似乎不起作用。我的命令需要时间才能在终端中显示输出,这将是它未在浏览器上显示的原因。

set_time_limit (0); 
echo '<pre>';
$output=array();
$last_line = system('cat /home/me/dev/test/working/test_string.txt | java -jar /home/simon/logstash/build/logstash-1.1.10.dev-monolithic.jar agent -f /home/me/dev/test/working/my_itch_con.config',$output);
echo '</pre>';
echo "Complete";
print_r($output);
echo "<br>"; 

【问题讨论】:

  • 它显示日志结果只是希望它出现在浏览器上。执行该过程时,显示输出确实需要一分钟。
  • 我明白了。但是现在它在浏览器中显示什么?
  • 来自php.net,当你给system函数提供第二个参数时,执行命令的返回状态将被写入这个变量。
  • 试试我回答中的例子。确保你已经完成了仪式。

标签: php system exec output


【解决方案1】:

system 的参数(它不会显示输出,它只是返回命令的状态)

命令

将要执行的命令。

return_var

如果存在 return_var 参数, 那么执行命令的返回状态将 写入此变量。

///////////////////////////............ ..................................................... ......................//////////////////// //////////////////////p>

Use `exec` command instead

命令

将要执行的命令。

输出

如果存在输出参数,则指定的数组将被命令的每一行输出填充。此数组中不包含尾随空格,例如 \n。请注意,如果数组已经包含一些元素, exec() 将追加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给 exec() 之前在数组上调用 unset()。

return_var

如果 return_var 参数与输出参数一起存在,则执行命令的返回状态将写入此变量。

EG:-

exec('whoami', $test, $arr);

print_r($test);

在浏览器中它o/p

Array ( [0] => nt authority\system ) 

更多信息

http://php.net/manual/en/function.exec.php

【讨论】:

    【解决方案2】:

    确认你是否在disable_function块中禁用了php.ini中的system功能

    当设置error_reporting(E_ALL)显示所有错误时

    【讨论】:

    • @Sahal 是的我知道,所以我认为是 PHP 配置问题
    • @likai 为什么我在使用系统功能时会禁用系统功能并且它在终端中工作?
    • 没有系统功能可以在终端而不是在浏览器中工作。你给出的答案与他的问题相去甚远
    • @Sahal 如果system 功能被禁用,调用它将返回警告。所以 set error_reporting(E_ALL) 可以抓住它。如果我错了,请纠正我
    • @Sahal 你有什么建议?
    猜你喜欢
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2016-12-18
    • 2017-04-19
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多