捕获发出第一个字符的代码行

Trapping line of code that emits first character

突然之间,应用程序不再能够输出 ZIP 文件。检查发现原因:ZIP 的第一个字符是空白,这违反了 ZIP 格式规范。

为了找出这个问题,我启用了 CStatementTracer,它将每行执行的代码打印到一个日志文件中。没有帮助。 [备注: declare(ticks=1);似乎没有捕获每一行执行的代码]

然后我像这样设置输出处理程序:

function callback( $buffer )  {

    $deb = print_r( debug_backtrace(), TRUE );
    file_put_contents( './statementTrager.log', $deb );

    return $buffer;

}

ob_start("callback", 1 );

遗憾的是,根本没有调用此处理程序。

问:是否存在通用/规范解决方案,它识别发出第一个字符的PHP代码的文件/行。

一个解决方案,无论其他代码被执行什么,它都会找到 loc。

备注:

同时我发现了代码的可疑点:开始前的空白

不过,我还是想获得有关程序化解决方案的提示。最好是用纯 PHP.

编写的解决方案

https://linux.die.net/man/1/strace 可能是找出输出来源的最可靠工具。假设您在 Linux。其他平台肯定有类似的工具。

虽然它不会给你php代码行,但你可以分析发送冒犯性字符前后系统调用的上下文。通常只要确定问题的根源就足够了。

虽然这是一个非常耗时的过程。应该作为最后的手段使用。