php CI框架输出空行问题排查

  今天在使用 curl 命令行工具调试一个功能时,发现输出的内容总是会在最开始莫名其妙的多一行空行:

  项目框架是 php 的 CodeIgniter,感觉这种问题在网上不好查找,因为可以确定这个是业务出现的问题,然后只能自己去定位查找了。然而我目前对 CodeIgniter 框架的运行机制并不是很了解,所以只好用一种比较迂回的方法——通过 svn 的 log 来查看到底是修改了哪一个文件导致空行的出现。于是便在另外的目录拉取下最新的 trunk 代码,然后使用 svn merge -r [this revision]:[target revision] "" 不断回滚到历史某个版本,然后用 curl 来调试看是否还会出现这个诡异的空行。当然,并不是顺序依次去试每个版本,而是使用二分查找的方式(先回滚到首尾的版本,然后是中间某个版本,再然后是四分之一……)来缩小范围,加快查找速度,毕竟会出现空行的版本和正常的版本是不会混淆在一起的,是有明显的分界线的,所以二分的方法是可行的。话虽如此,还是浪费了一个小时的时间,最终终于定位到问题所在,原来是由于某个 helper 类文件在一开始的 <?php 的前面多了一个空行,所以才导致了输出结果时这个空行的出现,这个应该和 CodeIgniter 框架加载 helper 类文件的机制有关,具体的机制以后再来学习了,总之定位到就行了。

  顺带一提,这个 helper 类文件头之所以会多了这个让我折腾了这么久的空行,是某个同事的修改导致的,真是神坑队友。。。不过我也得赶快完全摸透 CodeIgniter 框架才行,要不然以后再次碰到一些奇葩的问题还要像今天这样耗费这么多时间来定位的话就很影响工作效率了~

原文地址:https://www.cnblogs.com/Newdawn/p/7798941.html