dongnao6858 2011-07-15 06:36
浏览 80
已采纳

允许exec()调用php写入控制台

I invoked a php file by exec() doing this :

<?php
$cmd = "php -q nah.php";
exec($cmd);
echo "lalal";
?>

and the nah.php has this :

<?php
echo "yaya";
sleep(3);
?>

It does sleep for 3 seconds but the file can echo out to the command. How can I do echo the output from nah.php

  • 写回答

3条回答 默认 最新

  • douyi8315 2011-07-15 06:48
    关注

    If you want to capture the output of another process, then you can use backticks

    $output=`command line`;
    

    or capture it with exec()

    exec('command line', $output);
    

    However, both of these techniques only give the output when the external process has run to completion. If you want to grab the output as it happens, you can use popen (or proc_open for more control), e.g. something like this

    $handle = popen('command line 2>&1', 'r');
    while (!feof($handle))
    {
        $read = fread($handle, 2096);
        echo $read;
    }
    pclose($handle);
    

    The 2>&1 at the end of the command line is a handy idiom if running within a shell like bash. It redirects stderr to stdout, so any errors the command generates will be returned to PHP. There are more advanced ways to capture stderr, this just makes it easy.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统