Chyba není odchycena laděnkou ale zobrazí „500 Internal server error“
- kolsi
- Člen | 131
Ahoj,
nedokázal by prosím někdo poradit s tímto problémem? Poslední dobou se začlo stávat, že výjimka není odchycena laděnkou, ale místo toho se zobrazí zpráva „500 Internal Server Error“ (nejedná se o hlášku Nette).
`
The server encountered an internal error or misconfiguration and was unable to
complete your request.
Please contact the server administrator at xxx@xxx.cz to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.`
Prostě jako by spadnul celý Apache. Úplně jednoduše lze chybu reprodukovat např. nekonečnou smyčkou, kdy bych očekával chybu „Execution Time exceeded“, ale místo toho se zobrazí zmíněný Server error.
Apache/2.4.10
PHP 5.6.27 (PHP-FPM)
Nette Framework 2.3.10
- kolsi
- Člen | 131
tak ve /var/log/ssl-error.log se objeví toto:
[Fri Dec 16 09:47:53.574485 2016] [fastcgi:error] [pid 25315] [client ip:28947] FastCGI: comm with server "/usr/lib/cgi-bin/php5-fcgi" aborted: idle timeout (30 sec), referer: https://....
[Fri Dec 16 09:47:53.574560 2016] [fastcgi:error] [pid 25315] [client ip:28947] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php5-fcgi", referer: https://....
- kolsi
- Člen | 131
Tak změna nastavení idle_time sice vyřešit odchycení chyby „Max execution time exceeded“, ale u jiných chyb se to náhodně objevuje i nadále.
Teď jsem například napsal tento kód:
public function getChildrenList() {
$children = [ ];
foreach ($this->children as $child) {
$children[$child->id] = $child;
$children = array_merge($children, $this->getChildrenList());
}
return $children;
}
A okamžitě „500 Internal server error – The server encountered an
internal error …“
Vím, že je v kódu chyba, ale spíš mě zajímá, proč spadne celý
server…
php5-fpm.log pak obsahuje:
[11-Jan-2017 10:36:08] WARNING: [pool www] child 10322 exited on signal 11 (SIGSEGV) after 51.637905 seconds from start
[11-Jan-2017 10:36:08] NOTICE: [pool www] child 10336 started
A error.log apache obsahuje:
[Wed Jan 11 10:36:08.069621 2017] [fastcgi:error] [pid 6581] (104)Connection reset by peer: [client <ip>] FastCGI: comm with server "/usr/lib/cgi-bin/php5-fcgi" aborted: read failed, referer: xxx
[Wed Jan 11 10:36:08.069693 2017] [fastcgi:error] [pid 6581] [client <ip>] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php5-fcgi", referer: xxx
Editoval kolsi (11. 1. 2017 10:47)
- David Matějka
- Moderator | 6445
Jak mas nastavene opcache? zkus nastavit opcache.fast_shutdown
na 0, pripadne celou opcache vypnout.
- josef.zelenka
- Člen | 5
Ahoj, mám „stejný problém“, na jednom serveru v posledních měsících, náhodně se vygeneruje 500, dám refresh stránky a všechno v pohodě. Na dalších serverech ale tento problém zatím nepozoruji. Jak popisuje kolsi, chybu nezachytí tracy. Jeden známej popsal podobné chování na jejich serverech. Vím že používají jiný framework (Symfony a dřív používaly zend). Ten popisoval problém jako náhodný 500 při reloadu opcache ve spojení s PHP-FPM. Takže asi zkusím opcache vypnout a uvidíme :-(