Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2] Błąd 500
Forum PHP.pl > Forum > PHP > Frameworki
wiciu010
Mam aplikację w Symfony2. Przy wywołaniu akcji, która ma odebrać dane wysłane w formacie JSON z innego serwisu czasami otrzymuję błąd 500. Taka sytuacja powtarza się czasami, mimo, że wysyłane dane są w strukturze takie same a różnią się tylko wartościami. Jak mogę zdiagnozować co powoduje błąd 500? Odpalałem w trybie dev, ale po wejściu w przeglądarkę nie pojawił mi się na dole pasek świadczący, że jestemw tym trybie tylko od razu błąd 500.
Forti
Pokaż jakiś kod, pokaż dane.

Sprawdz logi w app/logs/dev.log.
Symfony w trybie dev pokazuje nawet dokładnie lokalizacje wystąpienia błędu. Sczegółowe informacje.
wiciu010
Cytat(Forti @ 22.06.2015, 11:33:55 ) *
Sprawdz logi w app/logs/dev.log.


Sprawdzam logi i tam nie ma żadnych komunikatów ERROR, tylko INFO oraz DEBUG. Odnośnie mojego wywołania jest:

Kod
[2015-06-22 11:39:43] request.INFO: Matched route "status_update" (parameters: "_controller": "Ex\CallBundle\Controller\DefaultController::statusUpdateAction", "_route": "status_update") [] []
[2015-06-22 11:39:43] security.INFO: Populated SecurityContext with an anonymous Token [] []
[2015-06-22 11:39:43] request.INFO: Matched route "status_update" (parameters: "_controller": "Ex\CallBundle\Controller\DefaultController::statusUpdateAction", "_route": "status_update") [] []
[2015-06-22 11:39:43] security.INFO: Populated SecurityContext with an anonymous Token [] []


Cytat(Forti @ 22.06.2015, 11:33:55 ) *
Pokaż jakiś kod, pokaż dane.


Dane, które odbieram:

Kod
data => {
   "id":24202,
   "created":1434963469,
   "details":{
      "channel_id":379,
      "dst":"",
      "src":"+48xxxxxx",
      "start":0,
      "end":0,
      "duration":0,
      "operator":"",
      "cost":"0",
      "status":"pending"
     }
},


Cytat(Forti @ 22.06.2015, 11:33:55 ) *
Pokaż jakiś kod, pokaż dane.


Kod, który obsługuje odbiór danych:

  1. public function statusUpdateAction(Request $request)
  2. {
  3. $post = $request->request->all();
  4. $data = json_decode($post['data']);
  5. $em = $this->getDoctrine()->getEntityManager();
  6. if (key_exists('data', $post)){
  7. $virtualNumber = $this->getDoctrine()->getRepository('ExCallBundle:Product')
  8. ->findOneBy(array('channel_id'=>$data->details->channel_id, 'is_active'=>1, 'type'=>'numer'));
  9. if ($virtualNumber && $virtualNumber->getMedia()){
  10. $media = $virtualNumber->getMedia();
  11. }else{
  12. $media = $this->getDoctrine()->getRepository('ExCallBundle:Media')
  13. ->findOneBy(array('channel_id'=>$data->details->channel_id));
  14. }
  15. $call = new History();
  16. $em->persist($call);
  17. $call->setDate(date_create(date('Y-m-d H:i:s', $data->created)))
  18. ->setOperatorId($data->id)
  19. ->setPhoneNumber($data->details->src)
  20. ->setDuration($data->details->duration)
  21. ->setCost(0)
  22. ->setStatus($data->details->status)
  23. ->setMedia($media)
  24. ->setProfile($media->getProfile())
  25. ->setUser($media->getUser());
  26.  
  27. if ($media->getUser()->getType()=='agency' && $virtualNumber){
  28. $call->setAgentNumber($virtualNumber->getAgentNumber()->getNumber());
  29. }
  30. }
  31. $em->flush();
  32. return new Response('ok');
  33. }
Forti
co znaczy "mam 500" ? To co pokazałeś to nie jest wszystko. Jak masz tryb developerski to nawet bez 500 logi są znacznie większe.

1. na pewno uruchamiasz tryb dev?
2. pokaż screen gdy dostajesz tą 500
prz3kus
pasek debugera może się nie pojawić jeżeli w twigu nie ma kodu HTML
wiciu010
Ok, dzięki za pomoc. Problem został rozwiązany.
Pyton_000
Super, a jak?
Forti
Ehh internety... gościu ma problem - opisuje i się produkuje. Ludzie chcą pomóc i poświęcają swój czas. A potem nagle "problem rozwiązany". No super.

To teraz dla innych powiedz co się stało - może ktoś kiedyś będzie miał podobny problem i właśnie tutaj znajdzie rozwiązanie.
wiciu010
Cytat(Forti @ 22.06.2015, 21:29:27 ) *
Ehh internety... gościu ma problem - opisuje i się produkuje. Ludzie chcą pomóc i poświęcają swój czas. A potem nagle "problem rozwiązany". No super.

To teraz dla innych powiedz co się stało - może ktoś kiedyś będzie miał podobny problem i właśnie tutaj znajdzie rozwiązanie.


Masz rację sorry.

No więc okazało się, że sama logika w kontrolerze była dobra. Problem polegał na tym, że błąd był w zapytaniu sql. Sprawdziłem logi w app/logs/dev.log i od razu znalazłem rozwiązanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.