PHP / Apache zawiesza się na skrypcie (błąd segmentacji (11)
[ROZWIĄZANY]
Używam skryptu PHP (z kilkoma dodatkami) na localhost, który zawiesza się przed końcem.
Raportowanie błędów jest włączone. Opera, Safari i Firefox zwracają pusty ekran. Ale Chrome zwraca:
Nie można załadować strony internetowej, ponieważ serwer nie przesłał żadnych danych. Kod błędu: ERR_EMPTY_RESPONSE
Logi Apache wracają:
[Nie 15 grudnia 19:29:23 2013] [powiadomienie] pid dziecka 34267 sygnał wyjścia Błąd segmentacji (11)
Używałem PHP 5.5.6, gdy po raz pierwszy natrafiłem na problem. Po obniżeniu do PHP 5.4.21 problem nadal istnieje.
Problem nie występuje w skrypcie. Losowe komentowanie kilku 50 linii kodu rozwiązuje problem. Zastanawiam się, czy mój skrypt może długo czekać na wykonanie.
Czy ktoś ma jakieś sugestie, w jaki sposób mogę rozwiązać ten problem?
AKTUALIZACJA:
Problem nie pojawia się tylko na localhost, ale także na moim serwerze internetowym działającym na CentOs 6.4 i PHP 5.3.3, dając ten sam błąd na Apache.
[Nie 15 grudnia 23:15:10 2013] [powiadomienie] dziecko pid 18409 sygnał wyjścia Błąd segmentacji (11)
UPDATE2:
Uruchamianie php z linii poleceń daje:
$ php index.php Błąd krytyczny: wywołanie niezdefiniowanej funkcji mcrypt_create_iv () w Encrypt.class.php w linii 135
Po umieszczeniu komentarza przed wierszem 135 na Encrypt.class.php
$ php index.php
Błąd segmentacji: 11
AKTUALIZACJA3: (Rozwiązanie)
Po uruchomieniu indeksu w wierszu poleceń za pomocą strace (strace php index.php) znalazłem problem w jednym z zapytań.
Po dłuższym debugowaniu (przy użyciu PDO zamiast mojej własnej klasy) odkryłem, że problemem było ustawienie mojej własnej opcji PDO „ATTR_PERSISTENT => true”. Wyłączenie tej opcji rozwiązało mój problem.