2013-01-21 62 views
3

自從PHP4和蛋糕1.3我一直在使用debug($data);調試的東西,如在CakePHP的模型輸出。CakePHP的調試()不工作,但調試器::轉儲()是好的

但是,自升級到PHP5.4後,我注意到debug($data)似乎並不總能奏效。例如,今天我做了一個簡單的$data = $this->Model->find('all');debug($data);內容顯示爲空。沒有錯誤,只是HTML輸出中的一個參考,我調用了調試和行號,然後沒有調試輸出。

但是,如果我運行Debugger::dump($data);完全相同的發現,它的作品發現,我看到了整個輸出。

這似乎只發生在$data有數據的顯著量(比方說,100個+記錄),但我對於這種規模的數據集之前PHP5.4工作,從來就沒有問題,沒有錯誤,內聯或在apache/php日誌中指出存在任何內存問題,並將調試設置爲3.

有沒有人有任何想法,爲什麼這是?我可以很容易地使用Debugger::dump($data); obviosly開始,但它只是一點點額外的有每一次嘗試,我想知道爲什麼我不能只用deubg();了。

+1

我有時會看到這種情況的發生與某些記錄奇怪的編碼(非UTF8通常情況下)。然後debug()輸出爲空,而vardump()和其他工作正常。這也許就是這種情況? – mark

+0

啊,是的,你是對的。 PHP升級只是一個巧合。這種情況發生的真正原因是由於數組中存在新增的UTF數據。謝謝!隨意添加這個作爲答案,我會標記爲正確的。 – Joseph

回答

5

這可以用在你的數據庫記錄的非UTF8編碼的數據發生 - 如果你的應用程序的其餘部分是UTF-8的。然後 debug()會輸出「Nothing」。 var_dump()print_r()和其他PHP的內部方法應該還是打印輸出,雖然。

您通常可以重新編碼他們用iconv爲utf8()等