查找 PHP 脚本输出字符串的位置

Find where PHP script outputs a string

当我 运行 php someScript.php 时,我得到了一些预期的输出和一些意外的字符串。它们看起来像调试字符串,可能是在开发期间放置在那里的。该文件是更大框架的一部分,可以包含可能进一步需要其他文件的其他文件。

我不知道哪个函数(echo、print、var_dump、write、...)被用来输出(不需要的)字符串。

如何找到将(动态生成的)字符串输出到标准输出的位置的文件和行号。

谢谢!

您应该能够从输出的结构中判断它是 var_dump、dd,还是更基本的回显。如果您在代码库中搜索 echo,实际上有那么多吗?

您可以尝试使用 xdebug 开始逐行单步执行代码,并找出代码的打印位置。如果正在打印的字符串确实没有静态文本,您可以 grep 代码库,这就是我开始的地方。

它有点难看,但您可以尝试弄乱输出缓冲区。以下方法似乎对我有用:

<?php
$locations = [];
ob_start(function($buffer) {
  global $locations;
  $locations[] = debug_backtrace();
  return $buffer;
}, 1);

// Your code with output here.

// $locations should contain the information now
print_r($locations); 
?>