我正在调试一个PHP脚本,它运行几个SQL查询并向一组用户发送电子邮件。我确信这是一个非常基本的东西,但是每次我尝试echo、print或print_r时,它都不会在运行脚本时出现。假设我在脚本中有这个:
print("This should print"); echo "on the command line";
当我通过命令行php script.php运行脚本时,它实际上并没有在运行脚本时将任何内容打印到命令行。有没有办法让PHP打印到控制台?我觉得我错过了一些非常基本的东西。
php script.php
f87krz0w1#
一个好的办法可以是:
function log($message) { $message = date("H:i:s") . " - $message - ".PHP_EOL; print($message); flush(); ob_flush(); }
它将输出到您的终端您调用的每条线路。只需用途:
log("Something"); log("Another line");
ugmeyewa2#
这就是做这件事的方法。要检查的内容是输出缓冲http://php.net/manual/en/function.ob-flush.php这段代码真的在运行吗?确保它在到达那里之前不会分支
yzckvree3#
下面的代码对我来说很好。
<?php print("This should print"); echo "on the command line"; ?>
带着标签
vhipe2zx4#
我知道这是旧的,但我会张贴我自己的解决方案,以防万一,如果有人会遇到类似的情况。我遇到了一个问题,即当DSN配置不正确时,遗留命令行PHP脚本不会将任何内容打印或回显到终端,并且脚本卡住了很长时间(不确定多长时间,从未等待它自行终止)。将ob_end_flush()放入脚本的入口行后,输出返回到终端。所以结果是所有的输出都是缓冲的,因为脚本在某个时候卡住了,输出保持缓冲状态,所以永远不会到达终端。
h22fl7wq5#
更新2023如果你使用一个PHP服务器像这个本地PHP服务器php -S 0.0.0.0:80那么您就看不到ClI中的任何错误,就像在Linux终端或Windows XP中一样。你可以在HTML文档中看到。如果你在JS里面使用PHP,那么你可以把它打印到浏览器控制台。
php -S 0.0.0.0:80
$message = "Thanks.. This is log"; echo "<script>console.log('".$message."');</script>";
这个例子。
5条答案
按热度按时间f87krz0w1#
一个好的办法可以是:
它将输出到您的终端您调用的每条线路。只需用途:
ugmeyewa2#
这就是做这件事的方法。
要检查的内容是输出缓冲http://php.net/manual/en/function.ob-flush.php
这段代码真的在运行吗?确保它在到达那里之前不会分支
yzckvree3#
下面的代码对我来说很好。
带着标签
vhipe2zx4#
我知道这是旧的,但我会张贴我自己的解决方案,以防万一,如果有人会遇到类似的情况。我遇到了一个问题,即当DSN配置不正确时,遗留命令行PHP脚本不会将任何内容打印或回显到终端,并且脚本卡住了很长时间(不确定多长时间,从未等待它自行终止)。将ob_end_flush()放入脚本的入口行后,输出返回到终端。所以结果是所有的输出都是缓冲的,因为脚本在某个时候卡住了,输出保持缓冲状态,所以永远不会到达终端。
h22fl7wq5#
更新2023
如果你使用一个PHP服务器像这个本地PHP服务器
php -S 0.0.0.0:80
那么您就看不到ClI中的任何错误,就像在Linux终端或Windows XP中一样。
你可以在HTML文档中看到。
如果你在JS里面使用PHP,那么你可以把它打印到浏览器控制台。
这个例子。