【问题标题】:does echo equal fputs( STDout )?echo 是否等于 fputs(STDout)?
【发布时间】:2011-10-25 01:38:28
【问题描述】:

echo 是否等于 fputs( STDOUT ),还是 echo 写入不同的流?我已经使用 PHP 有一段时间了,但我不太清楚在较低级别上实际发生了什么。

【问题讨论】:

    标签: php stream stdout


    【解决方案1】:

    根据PHP's manual page on wrappers,答案是否定的。

    php://输出

    php://output 是一个只写流,允许您写入 输出缓冲区机制与 print() 和 echo() 相同。

    printecho 写入php://output 流,而fputs(STDOUT) 写入php://stdout

    我做了一个小测试:

    <?php
    
    $output = fopen('php://output', 'w');
    ob_start();
    
    echo "regular echo\n";
    fwrite(STDOUT, "writing to stdout directly\n");
    fwrite($output, "writing to php://output directly\n");
    
    $ob_contents = ob_get_clean();
    print "ob_contents: $ob_contents\n";
    

    此脚本输出(在 PHP 5.2.13,windows 上测试):

    writing to stdout directly
    ob_contents: regular echo
    writing to php://output directly
    

    即写入STDOUT 直接绕过ob 处理程序。

    【讨论】:

    • STDOUT 的输出通常默认存储在哪里?例如。 STDERR 写信给C:\xampp\apache\logs\error.log,但 STDOUT 似乎“丢失”了。
    • STDOUT 将存储在 /path/subdirectory/file-store.txt 或者它使用 echo 或 print
    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 2022-01-15
    • 2014-03-06
    • 2021-05-02
    • 2011-10-22
    相关资源
    最近更新 更多