2014-06-13 24 views
1

有一個奇怪的問題。我有一個我開發的門戶網站,直到今天,它一直在prod和dev環境中運行良好。今天運行一個作曲家更新後,一切工作在開發環境上都很棒,但是當我把它推到生產環境時,我的一個網頁停止工作。該頁面允許我拉起用戶帳戶並修改某些字段(非常簡單)。Laravel/Sentry Eloquent User :: __ toString()不能拋出異常

作爲一個例子/測試我已經在控制器中創建一個測試功能吐出的特定用戶的信息:

public function getTest(){ 
    $user = Sentry::findUserByLogin('XXXXX'); 
    echo $user; 
} 

當運行在dev的側這種功能,它顯示了所有信息其假設至。當在生產方面我得到這個錯誤:

production.ERROR: 500 - Method Cartalyst\Sentry\Users\Eloquent\User::__toString() must not throw an exception @ /employees/admin/test 
exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Method Cartalyst\Sentry\Users\Eloquent\User::__toString() must not throw an exception' in E:\sites\yaya.com\portal\app\src\employees\controllers\admin.php:0 
Stack trace: 
[internal function]: Illuminate\Exception\Handler->handleShutdown() 
{main} [] [] 

我沒有修改哨兵伶牙俐齒的內部事情。

什麼會導致此錯誤的任何想法?在生產方面,如果我做了var_dump(user)它不會拋出錯誤,我可以看到受保護字段內的所有內容。或者,如果我確實迴應$user->username它也可以正常工作。問題是我需要將用戶信息以及用戶所在的組返回給我的JS,以根據爲用戶選擇的下拉列表將其顯示在屏幕上。

+0

你更新了'Laravel'版本嗎?這兩個(dev和prod)地方的同步(相同版本)?兩個地方都安裝了相同的'PHP版本'嗎? –

+0

兩個版本都是相同的PHP版本,我已經將生產服務器上的門戶完全刪除,並將開發環境中的所有內容都複製過來。就Laravel版本而言,我已將它設置爲laravel/framework:4.2。*因此可能進行了小修改,但無論是哪種情況,即使將每個文件都複製過來,它仍然在dev上工作,而不是prod。 – Silent

+0

看起來'echo $ user;'是這個錯誤的原因。 '__toString'方法可能會被破壞,當你嘗試「迴應」一個「對象」時,它會被自動調用。 –

回答

1

終於明白了!不知道發生了什麼,但我開始比較數據庫中的數據行,發現一些差異。拉開設計視圖,並確信足夠的幾個領域是不同的生產,然後我的開發環境。而不是「日期時間」,他們被設置爲「smalldatetime」不確定會導致什麼,但將其更改爲「日期時間」,並開始工作。

感謝您的幫助狼人!

0

產生此錯誤時最常見的情況是錯誤,當,f.e.而不是

{{ $user->id }} 

有人類型

{{ $user }} 

所以錯誤明確表示,toString方法被調用。