Napotkałem na dosyć dziwny problem, chciałem się dowiedzieć czy ktoś z Was może ma pomysł o co może chodzić. Mam w aplikacji zarejestrowany autoloader, w jednym miejscu dispatchera wykonuję:
Cytat
if (method_exists($cn, $this->action)) {
gdzie $cn - to nazwa kontrolera wraz z przestrzenią nazw, action - nazwa akcji.
Z tego co się zorientowałem method_exists używa autoloadera w celu wyszukania klasy. Wszystko działa pięknie do momentu gdy jako controller nie przekazuję ciągu Controller_ . Loader wyszukuje w określonych lokalizacjach pliku, ostatecznie nie znajduje - jeśli na samym końcu loadera dodam die, to do tego momentu loader dochodzi, czyli wnioskuję że loader kończy poprawnie działanie nie znajdując w tym wypadku kontrolera. Jeśli natomiast to die usunę i pozwalam aplikacji przejść dalej, niestety nic dalej w aplikacji się już nie wykonuje - ani żadna linijka po linii z method_exists ani else - serwer zwraca"
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later."
W logu apache widać "(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server, referer:" + "Premature end of script headers: index.php, referer:"
Na localhoscie i jednym serwerze z php 5.3.7 takiego problemu w ogóle nie ma. Niestety na docelowym serwerze problem się pojawił - najpierw była wersja 5.3.4 - poprosiłem o aktualizację do najnowszej 5.3.8 i to też nie pomogło. Sprawę co prawda rozwiązałem nie wywołując method_exists dla pewnych wartości $cn jednak to może być średnie rozwiązanie, bo nigdy nie wiem czy nie może być jeszcze jakichś innych źródeł błędu.
Kodu niestety nie jestem w stanie więcej podać (jest to cała aplikacja), po wydzieleniu fragmentu do pojedynczego pliku wszystko jest ok. Administratorzy serwera twierdzą że to jakiś błąd aplikacji.
Jeśli ktoś ma jakiś pomysł co może być źródłem błędu lub spotkał się kiedyś z czymś podobnym, proszę o info.
Pozdrawiam