2016-09-04 62 views
-1

我目前正在使用symfony 3構建訂閱表單,並且所有作品都像它應該在開發環境中一樣。一旦我將它部署到生產環境中,所有工作都會在開始時正常工作 - 數據將被推送到數據庫,就像第一個訂戶所需的那樣。但是,當我關閉網站時,再次打開它,填寫表單並嘗試提交 - 數據不會推送到數據庫。當時我沒有遇到任何特別的錯誤,它看起來像是試圖將它推到數據庫,但後來發生了一些崩潰,最後我完成了。Symfony 3表單不會持久化到數據庫

這似乎是部署問題,但我似乎無法弄清楚哪一個。我正在使用deployer.org部署我的應用程序

部署時出現此錯誤「無法爲可寫目錄設置正確的權限。您需要配置sudo的sudoers文件以不提示輸入密碼或手動設置正確的權限。我沒有給予任何特別的關注,因爲我的網站部署了,並且網站的一個用戶確實推送到了數據庫。

我使用MySql作爲數據庫

任何幫助都非常appriciated。

+0

檢查無功/日誌/ prod.log文件,也許一個明確的錯誤顯示在其中。 –

+0

感謝提示@Chuck Norris - 剛剛接觸到我的var/logs/prod.log文件。我在那裏看到的錯誤是「請求關鍵:未捕獲的PHP異常Symfony \ Component \ Debug \ Exception \ UndefinedMethodException:」試圖調用類「AppBundle \ Entity \ SubscriberDetails」中名爲「setId」的未定義方法。你的意思是調用「getId」嗎?「」問題是,這個錯誤的ID是一個唯一的標識符,這是在AppBundle/Controller/Entity/SubscriberDetails中自動生成的+所有在我的本地主機上正常工作,所以不確定這裏有什麼錯誤。 –

+0

嘗試在prod環境上清除緩存:php bin/console c:c -e = prod(或刪除var/cache /中的文件夾prod) –

回答

0

終於搞定了。在我的SubscriberDetails實體中,我設置了自動生成的id(例如@ORM\GeneratedValue(strategy="AUTO")),並且出於我不確定的原因,並且希望知道這在開發中運行良好,但在產品上根本不工作。因此,解決方案,這是從實體層面刪除自動生成並通過在控制器模擬它:

$query = $em ->createQuery('SELECT MAX(s.id) FROM AppBundle:SubscriberDetails s'); 
$newSubscriber ->setId($query->getSingleScalarResult() + 1); 

這奏效了,我