2015-04-04 30 views
1

我正在使用Laravel应用程序,经过一些更新后,我一直在每个http响应或控制台输出中获得一个逗号“,”,所以我疯狂地试图找出哪个脚本文件正在打印该字符。哪个脚本在PHP中编写输出?

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


UPDATE

我已经把回声呼叫作曲家的ClassLoadervendor\composer\ClassLoader.php为加载的类被称为包括功能之后,如下所示:

/** 
* 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之前,由于

+0

是的,做模具()上的代码各部分(更好,然后用这个了XDebug),并鉴于 – user1954544 2015-04-05 00:16:53

+0

也许看起来die()函数完成这个任务在laravel比xdebug更加困难,xdebug自动进入所有加载文件链中的所有调用函数和方法。随着死亡,你需要手动来做到这一点。 – 2015-04-05 01:32:17

+0

搜索您的整个应用程序的两个逗号(,,),你可能会发现它。 – afarazit 2015-04-05 12:52:42

回答

1

既然你已经在HTTP和控制台中使用它,那么这就排除了视图。

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

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

+1

要回答你的直接问题:如果它包含'<?php'和'?>'标签之外的任何文本,潜在的每个脚本都会写出输出。在这种情况下,调试器不会帮助你,因为php会缓冲它的输出。除非关闭缓冲区,否则在转储缓冲区之前您不会看到输出。 – vladsch 2015-04-05 12:29:44

0

不,你不能,这就是为什么你应该使用一个版本控制系统(即:GIT),这样你就可以轻松地回滚每当系统休息。

在你的情况,你可以尝试寻找逗号你的工作目录的每一个文件中(escluding供应商和其他不重要的文件夹,如存储)

如果你有一个调试器,你可以尝试步入检查从开始的每一个呼叫

1

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

看到这stackover entry guiadance。

我强烈建议使用一个真正的调试工具作为一个很好的实践。但也许对于这个特殊的purpouse来说它有点过分。

1

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

我会从routes.php文件开始。看看逗号出现在hello之前还是之后。如果它在hello之前,那么逗号位于引导文件之一中。

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

+0

感谢您的回答,正如我在更新中写的那样,逗号似乎出现在两个预加载的类之间,同时引导任何提示? – 2015-04-05 17:05:50