从PHP脚本打印/回显到控制台

s71maibg  于 2023-10-15  发布在  PHP
关注(0)|答案(5)|浏览(168)

我正在调试一个PHP脚本,它运行几个SQL查询并向一组用户发送电子邮件。我确信这是一个非常基本的东西,但是每次我尝试echo、print或print_r时,它都不会在运行脚本时出现。
假设我在脚本中有这个:

print("This should print");
echo "on the command line";

当我通过命令行php script.php运行脚本时,它实际上并没有在运行脚本时将任何内容打印到命令行。
有没有办法让PHP打印到控制台?我觉得我错过了一些非常基本的东西。

f87krz0w

f87krz0w1#

一个好的办法可以是:

function log($message)
{
    $message = date("H:i:s") . " - $message - ".PHP_EOL;
    print($message);
    flush();
    ob_flush();
}

它将输出到您的终端您调用的每条线路。只需用途:

log("Something");
log("Another line");
ugmeyewa

ugmeyewa2#

这就是做这件事的方法。
要检查的内容是输出缓冲http://php.net/manual/en/function.ob-flush.php
这段代码真的在运行吗?确保它在到达那里之前不会分支

yzckvree

yzckvree3#

下面的代码对我来说很好。

<?php
    print("This should print");
    echo "on the command line";
?>

带着标签

vhipe2zx

vhipe2zx4#

我知道这是旧的,但我会张贴我自己的解决方案,以防万一,如果有人会遇到类似的情况。我遇到了一个问题,即当DSN配置不正确时,遗留命令行PHP脚本不会将任何内容打印或回显到终端,并且脚本卡住了很长时间(不确定多长时间,从未等待它自行终止)。将ob_end_flush()放入脚本的入口行后,输出返回到终端。所以结果是所有的输出都是缓冲的,因为脚本在某个时候卡住了,输出保持缓冲状态,所以永远不会到达终端。

h22fl7wq

h22fl7wq5#

更新2023
如果你使用一个PHP服务器像这个本地PHP服务器
php -S 0.0.0.0:80
那么您就看不到ClI中的任何错误,就像在Linux终端或Windows XP中一样。
你可以在HTML文档中看到。
如果你在JS里面使用PHP,那么你可以把它打印到浏览器控制台。

$message = "Thanks.. This is log";
echo "<script>console.log('".$message."');</script>";

这个例子。

相关问题