Chyba není odchycena laděnkou ale zobrazí „500 Internal server error“

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kolsi
Člen | 131
+
0
-

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

CZechBoY
Člen | 3608
+
0
-

A jak zapínáš+nastavuješ tracy?

kolsi
Člen | 131
+
0
-

Nedělám nic speciálního. Používám to, co je v sandboxu.

Když udělám v kódu třeba překlep, tak to Tracy odchytí v pořádku, takže se to nejspíš týká pouze některých chyb. A dřív to fungovalo bez problému, tak jestli za to nemůže nějaká aktualizace na serveru (apache, php…).

Eda
Backer | 220
+
0
-

Podívej se do serverového logu, co jsou to za chyby.

Když to PHP je zabito Apachem, Tracy to ani odchytnout nemůže.

kolsi
Člen | 131
+
0
-

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://....
Eda
Backer | 220
+
0
-

Zkus zkontrolovat nastavení time limitu na úrovni Apache.

kolsi
Člen | 131
+
0
-

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
+
0
-

Jak mas nastavene opcache? zkus nastavit opcache.fast_shutdown na 0, pripadne celou opcache vypnout.

kolsi
Člen | 131
+
0
-

Zkusil jsem ale bohužel nepomohlo. Zajímavé je, že ta chyba se objevuje úplně náhodně. A ve Firefoxu to občas zobrazí „Chyba znakové sady obsahu“.

Johny 5
Člen | 5
+
0
-

Mám úplně stejný problém. Mohu se zeptat, zda někdo zjistil, proč to tak je? Mám aktuální verzi z dneška. Třeba někdy po x-tým refreshi se mi podaří laděnka zobrazit, ale není to časté, jen náhoda. Refreshů jsou desítky, ne-li více. Předem děkuji za každou radu.

josef.zelenka
Člen | 5
+
0
-

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 :-(