2012-01-16 16 views
5

Próbuję wykonać następujące czynności przy użyciu oficjalnego SDK PHP FB za:Jak prześledzić przyczynę błędu wewnętrznego serwera 500?

$facebook->api(
'/me/feed', 
'POST', 
array(
    'link' => 'test', 
    'message' => 'test' 
) 

)

Niestety, serwer (nie Facebook) zwraca błąd 500.

Żądanie przechodzi, status zostaje opublikowany, ale mój serwer zwraca błąd.

Moje pytanie brzmi: jak mogę się dowiedzieć, jaka jest tego przyczyna?

+0

sprawdź swój dziennik błędów serwera. (jeśli masz appache ma dziennik błędów) –

Odpowiedz

5

500 jest ogólnie "wewnętrznym błędem serwera".

Jeśli otrzymasz 500 z powrotem z apka na Facebooku, to może być coś nie tak na końcu.

Ponownie, twoje żądania HTTP mogą być nieco wyłączone, a serwer fb "um, what?" i wysyła ci 500, ponieważ nie może wyjaśnić problemu.

Pamiętam, że wiele lat temu fb api zwróciło głównie kody "nieznanego błędu", gdy coś poszło nie tak - od tego czasu nie dotykałem tego interfejsu. Mam nadzieję, że nie napotkasz na ten sam problem.

Aby naprawdę rozwiązać problem, trzeba będzie albo:

A) przechwytywać żądania HTTP i odpowiedzi, w tym nagłówki, porównać go do pomyślnego wywołania API i dokonać zmian w razie potrzeby. B) przechwycić wszelkie wyjątki wyrzucone przez SDK Facebooka.

Opcja A będzie zawsze działać, ale opcja B jest prawdopodobnie szybsza.

Check out: php exceptions

EDIT: aby zobaczyć, co powoduje błąd 500 na serwerze Apache spojrzeć w logi błędów.

można również użyć

error_reporting(E_ALL); 

aby wykluczyć ewentualne błędy PHP.

+0

Prawdopodobnie nie wyjaśniłem sobie: serwer zwraca 500 kod, a nie Facebook. Zakładam, że gdyby to był facebook, to żądanie po prostu by się nie udało i mój serwer nie zwróciłby błędu 500. Status zostaje opublikowany, wydaje się, że nie ma problemu na końcu FB. – Lior

+0

w takim przypadku dzienniki błędów apache powinny informować o problemie. – okayGraphics

0

W moim przypadku przeniosła aplikację z jednego serwera na inny, a brakuje CURL był bug :)

W trybie administracji ssh mogłem zobaczyć następujące Line>

PHP Fatal error: Uncaught wyjątek " Wyjątek "z wiadomością" Facebook potrzebuje rozszerzenia PHP CURL. " w /srv/www/smixe.com/base_facebook.php:19

Powiązane problemy