2015-04-04 28 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