哪个脚本正在 PHP 中写入输出?
Which script is writing output in PHP?
我正在开发一个 Laravel 应用程序,经过一些更新后,我在每个 http 响应或控制台输出中不断收到一个逗号“,”,所以我疯狂地试图找到哪个脚本文件正在打印它字符.
是否可以知道哪个文件正在写入输出 http 响应或控制台?
更新
我已经在 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
之前,谢谢
不,你不能,这就是为什么你应该使用版本控制系统(即:git),这样你就可以在系统中断时轻松回滚。
在您的情况下,您可以尝试在工作目录的每个文件中搜索逗号(不包括 vendor 和其他不重要的文件夹,例如 storage)
如果您有调试器,您可以尝试从头开始检查每一个调用
是的,您可以,debugging with xdebug 或其他调试器工具,逐步(step into)直到找到脚本。
请参阅此 stackover entry 以获得指导。
我强烈建议使用真正的调试工具作为良好的专业实践。但也许出于这个特定的目的,它有点过分了。
您可能可以通过一些基本的调试来缩小范围。在整个应用程序中添加 dd('hello')
。
我将从 routes.php
文件开始。查看逗号出现在 hello
之前还是之后。如果它在 hello 之前,则逗号在引导文件之一中。
如果逗号在 hello 之后,那么它很可能出现在您的某个视图等中。继续将 dd('hello')
移到您的应用程序的更深处,直到它出现。
因为您在 HTTP 和控制台中拥有它,所以这排除了视图。
罪魁祸首可能是在开始 <?php
标记之前无意中插入了一个逗号。很可能是每个 PHP 文件顶部的第一个文件。
搜索 ,<?php
或正则表达式模式 /\s*,\s*<\?php/
我正在开发一个 Laravel 应用程序,经过一些更新后,我在每个 http 响应或控制台输出中不断收到一个逗号“,”,所以我疯狂地试图找到哪个脚本文件正在打印它字符.
是否可以知道哪个文件正在写入输出 http 响应或控制台?
更新
我已经在 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
之前,谢谢
不,你不能,这就是为什么你应该使用版本控制系统(即:git),这样你就可以在系统中断时轻松回滚。
在您的情况下,您可以尝试在工作目录的每个文件中搜索逗号(不包括 vendor 和其他不重要的文件夹,例如 storage)
如果您有调试器,您可以尝试从头开始检查每一个调用
是的,您可以,debugging with xdebug 或其他调试器工具,逐步(step into)直到找到脚本。
请参阅此 stackover entry 以获得指导。
我强烈建议使用真正的调试工具作为良好的专业实践。但也许出于这个特定的目的,它有点过分了。
您可能可以通过一些基本的调试来缩小范围。在整个应用程序中添加 dd('hello')
。
我将从 routes.php
文件开始。查看逗号出现在 hello
之前还是之后。如果它在 hello 之前,则逗号在引导文件之一中。
如果逗号在 hello 之后,那么它很可能出现在您的某个视图等中。继续将 dd('hello')
移到您的应用程序的更深处,直到它出现。
因为您在 HTTP 和控制台中拥有它,所以这排除了视图。
罪魁祸首可能是在开始 <?php
标记之前无意中插入了一个逗号。很可能是每个 PHP 文件顶部的第一个文件。
搜索 ,<?php
或正则表达式模式 /\s*,\s*<\?php/