我正在调试一个PHP脚本,该脚本运行几个SQL查询并向一组用户发送电子邮件。我确信这是一件非常基本的事情,但每次我尝试回显、打印或打印时,它都不会在运行脚本时出现。
假设我在脚本中有这个:
print("This should print");
echo "on the command line";
当我通过命令行php script.php
运行脚本时,它在运行脚本时实际上不会向命令行打印任何内容。
有没有办法让PHP打印到控制台?我觉得我错过了一些非常基本的东西。
一个好的方法可以是:
function log($message)
{
$message = date("H:i:s") . " - $message - ".PHP_EOL;
print($message);
flush();
ob_flush();
}
它将向您的终端输出您呼叫的每一条线路。只需使用:
log("Something");
log("Another line");
这就是这样做的方法。
需要检查的是输出缓冲http://php.net/manual/en/function.ob-flush.php
那个代码真的在运行吗?确保它在到达之前没有分支
下面的代码对我来说很好。
<?php
print("This should print");
echo "on the command line";
?>
带有标签。
我知道它很旧,但我会发布我自己的解决方案,以防有人遇到类似的情况。我遇到了一个问题,当DSN配置不正确时,遗留的命令行PHP脚本不会打印或回显任何内容到终端,并且脚本被卡住了很长一段时间(不确定有多长时间,从未等待它自己终止)。将ob_end_flush()放入脚本的入口行后,输出返回到终端。因此,事实证明,所有输出都是缓冲的,由于脚本在某个时刻卡住了,所以输出保持缓冲状态,因此从未到达终端。