哪个脚本在PHP中编写输出?

时间:2015-04-04 23:22:24

标签: php laravel laravel-4 xdebug

我正在使用Laravel应用程序,经过一些更新后,我在每个http响应或控制台输出中都会收到一个逗号“,”所以我很想找到哪个脚本文件正在打印该字符。

是否可以知道哪个文件正在写入输出http响应或控制台?


更新

在调用加载类的include函数后,我在Composer的 ClassLoader vendor\composer\ClassLoader.php中调用了一个echo调用,如下所示:

/**
 * Scope isolated include.
 *
 * Prevents access to $this/self from included files.
 */
function includeFile($file)
{
    include $file; echo $file . "\n";
}

现在加载以下类之间的逗号,这有用吗?

C:\Users\Bla\Bla\trunk\vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php 
,C:\Users\Bla\Bla\trunk\vendor/laravel/framework/src/Illuminate/Foundation/AliasLoader.php 
C:\Users\Bla\Bla\trunk\vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php

更新2

发现它!正如@vladsch所述,它位于我的一个配置文件中的开始标记,<?php之前,谢谢

4 个答案:

答案 0 :(得分:1)

是的,你可以,debugging with xdebug或其他debbuger工具,一步一步(步入),直到找到脚本。

请参阅此stackover entry了解guiadance。

我强烈建议您使用真正的调试工具作为良好的专业实践。但也许对于这个特殊的purpouse它有点过度镶嵌。

答案 1 :(得分:1)

您可以通过一些基本调试来缩小范围。在整个申请过程中添加dd('hello')

我会从routes.php文件开始。查看逗号是否出现在hello之前或之后。如果它在hello之前,则逗号位于其中一个引导文件中。

如果逗号在问候之后,那么很可能是在你的一个视图中等。继续将dd('hello')深入到你的应用程序中直到它出现。

答案 2 :(得分:1)

由于您在HTTP和控制台中拥有它,因此这将排除视图。

罪魁祸首可能是在开放<?php标记之前无意中插入的逗号。最有可能是每个PHP文件顶部的第一个。

搜索,<?php或正则表达式/\s*,\s*<\?php/

答案 3 :(得分:0)

不,你不能,这就是你应该使用版本控制系统(即:git)的原因,这样你就可以在系统中断时轻松回滚。

在您的情况下,您可以尝试在工作目录的每个文件中搜索逗号(包括供应商和其他不重要的文件夹,如存储)

如果你有一个调试器,你可以尝试进入检查来自开始

的每一个调用