1. 程式人生 > >php CI框架輸出空行問題排查

php CI框架輸出空行問題排查

定位 比較 blog tar 依次 框架 輸出結果 mage 由於

  今天在使用 curl 命令行工具調試一個功能時,發現輸出的內容總是會在最開始莫名其妙的多一行空行:

技術分享

  項目框架是 php 的 CodeIgniter,感覺這種問題在網上不好查找,因為可以確定這個是業務出現的問題,然後只能自己去定位查找了。然而我目前對 CodeIgniter 框架的運行機制並不是很了解,所以只好用一種比較迂回的方法——通過 svn 的 log 來查看到底是修改了哪一個文件導致空行的出現。於是便在另外的目錄拉取下最新的 trunk 代碼,然後使用 svn merge -r [this revision]:[target revision] "" 不斷回滾到歷史某個版本,然後用 curl 來調試看是否還會出現這個詭異的空行。當然,並不是順序依次去試每個版本,而是使用二分查找的方式(先回滾到首尾的版本,然後是中間某個版本,再然後是四分之一……)來縮小範圍,加快查找速度,畢竟會出現空行的版本和正常的版本是不會混淆在一起的,是有明顯的分界線的,所以二分的方法是可行的。話雖如此,還是浪費了一個小時的時間,最終終於定位到問題所在,原來是由於某個 helper 類文件在一開始的 <?php 的前面多了一個空行,所以才導致了輸出結果時這個空行的出現,這個應該和 CodeIgniter 框架加載 helper 類文件的機制有關,具體的機制以後再來學習了,總之定位到就行了。

  順帶一提,這個 helper 類文件頭之所以會多了這個讓我折騰了這麽久的空行,是某個同事的修改導致的,真是神坑隊友。。。不過我也得趕快完全摸透 CodeIgniter 框架才行,要不然以後再次碰到一些奇葩的問題還要像今天這樣耗費這麽多時間來定位的話就很影響工作效率了~

php CI框架輸出空行問題排查