Zvláštní chování – obecná chyba 500, přitom Tracy odchytává
- nettolog
- Člen | 68
Ahoj. Snažím se rozchodit Nette v tomto složení:
nette/sandbox
nginx/1.14.2
PHP 7.3.17
Checker funguje a oznamuje jen warningy ohledně dvou extensions:
Web server nginx/1.14.2
PHP version 7.3.17-1+0~20200419.57+debian10~1.gbp0fda17
Memory limit 128M
try_files rewrite rules Enabled
Function ini_set() Enabled
Function error_reporting() Enabled
Function flock() Enabled
Register_globals Disabled
Variables_order Enabled
Session auto-start Enabled
PCRE with UTF-8 support Enabled
Reflection phpDoc Enabled
ICONV extension Enabled and works properly
JSON extension Enabled
Fileinfo extension Enabled
PHP tokenizer Enabled
PDO extension Available drivers: mysql sqlite
PDO SQLite extension Enabled
Multibyte String extension Enabled
Multibyte String function overloading Disabled
Memcached extension Disabled
Memcache extension is absent. You will not be able to use Nette\Caching\Storages\MemcachedStorage.
GD extension Enabled
Bundled GD extension Disabled
Bundled GD extension is absent. You will not be able to use some functions such as Nette\Image::filter() or Nette\Image::rotate().
Fileinfo extension or mime_content_type() Enabled
Intl extension Enabled
HTTP_HOST or SERVER_NAME Present
REQUEST_URI or ORIG_PATH_INFO Present
SCRIPT_NAME or DOCUMENT_ROOT & SCRIPT_FILENAME Present
REMOTE_ADDR or php_uname("n") Present
Zatím jsem nenastavoval routování v nginxu, takže v url mám
standardně /www/index.php
. To vrací chybu 500. Log nginxu
prázdný, stejně tak log nette (práva jsou 777).
Zvláštní je, že když do index.php přidám phpinfo();
:
<?php declare(strict_types=1);
phpinfo();
require __DIR__ . '/../vendor/autoload.php';
App\Bootstrap::boot()
->createContainer()
->getByType(Nette\Application\Application::class)
->run();
Ozve se mi Tracy s chybou:
Tracy\Debugger::dispatch() called after some output has been sent. Output started at /var/www/clients/client0/web1/web/www/index.php
Chápu tu chybu, vypíše se phpinfo(); v době, kdy je to nežádoucí. Ale
to by mělo znamenat, že chyby Tracy v pohodě odchytává a problém
nenastává někde dřív na úrovni nginxu.
Co je ještě zvláštnější je to, že když si vypnu laděnku, zobrazí se
bez phpinfo(); chyba 404 a s phpinfo(); se zobrazí klasicky phpinfo s tracy
oknem error 500. Co tam ta chyba 404 dělá?
Poradíte prosím cesty jak toto zdebugovat?
Použávám nginx poprvé, takže bych čekal chybu tam, ale vzhledem
k okolnostem a prázdnému error logu to moc nevypadá. Ale zapisovat do error
logu nginx může, z jiného projektu tam mám třeba chybu:
2020/04/20 05:01:18 [error] 562#562: *16 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysqli_init() in .../db_mysql.inc.php:83
Editoval nettolog (20. 4. 2020 7:48)
- nettolog
- Člen | 68
Vyřešeno.
Tak jsem to rozjel na apache, na první pokus se zobrazila tracy s chybou, že neexistuje routa pro request. Tím pádem dává smysl, proč se bez tracy zobrazovala chyba 404 a s tracy 500. Chyba byla tedy na straně nginxu, kdy nějaká direktiva při detekci chyby zobrazovala vlastní chybové stránky.