我必须在后台运行一个shell命令(使用来自/ usr / local / bin的ruby脚本),使用php(来自html / php表单)并忽略所有输出。
我尝试过exec()
,system()
,shell_exec()
。
在终端中执行脚本(不是由我编写,script link - 我不知道ruby)并将标准输出重定向到/ dev / null,它会一直显示有关下载的实时信息下载的进度和速度,直到完成。
我想这是因为脚本,我读过proc_open()
可以提供帮助的地方,但我不知道如何使用它。
修改
还添加“&”对于命令(在终端中),它一直显示有关下载进度和下载速度的实时信息,直到完成为止。
答案 0 :(得分:0)
/usr/local/apache2/htdocs$ ls
1.php ruby_prog.rb
1.PHP:
<div>hello</div>
<div>
<?php
$command = 'ruby ruby_prog.rb';
$output = [];
exec($command, $output, $return_var);
echo($output[0]);
?>
</div>
ruby_prog.rb:
puts 'world'
URL:
http://localhost:8181/1.php
在浏览器中输出:
hello
world
source html:
<div>hello</div>
<div>
world</div>
您可以检查$return_var
的值 - 如果它为0,则ruby程序成功运行;如果它不为零,则出现错误。
如果您不想要任何输出,则可以使用以下命令:
ruby ruby_prog.rb > /dev/null 2>&1
>
将stdout发送到/ dev / null,这是一个接收器,即它就像一个黑洞,而2>&1
表示将stderr(2)发送到stdout(&amp; 1)去的地方。