Problém mezi routováním a cache

grovik
Člen | 72
+
0
-

Mám takový zvláštní problém a nevím jak ho dost dobře popsat, ale zkusím to. Podezření mám na to, že drhne něco mezi routováním a cache.

  1. Na lokálním vývoji v kontejneru vše běží bez problémů a všechno je OK. Administrace administruje, a tak podobně.
  2. Pokud to nahraju na server a mám zapnout Tracy (na serveru) tak je to také v pohodě. Jen z nějakého důvodu se v jednom presenteru uživatel vyhodnocuje jako nepříhlášený (je to stejné jako kdekoliv jinde kde to funguje) je to ve Startup metodě.

Vypadá to asi nějak takhle:

 if (!$this->getPresenter()->getUser()->isLoggedIn()) {

Tohle se zachová špatně, ale jen na produkci.

3. Pokud Tracy vypnu, tak se to chová v pohodě, ale naopak v administraci v jednom místě umře datagrid (jinde ten stejný datagrid funguje). Pokud nejprve se zaplou tracy vlezu na ten datagrid, je vše OK. Dokud nesmažu cache. Divné je že se vykresl ískoro celá stránka, ale když má dojít na datagrid je místo něj chyba 500. Jakože přes ten zbytek vykreslené stránky.

Jsem z toho docela zoufalý, protože už jsem ty věci srovnal tak aby to bylo všude stejně a na jednom místě to dělá problé ma jinde to funguje. V logu nic není. Mám podezření na routování vs. cache protože i další lidi co testují si stěžovali na to že občas se jim stránka zobrazí jako by nebyly přihlášení.

Editoval grovik (11. 10. 8:22)

Kamil Valenta
Člen | 820
+
+1
-

První je potřeba vyřešit, proč v logu nic není. Chyby se nemohou jen tak ztrácet. Pokud to padlo do 500, musí o tom někde něco být. Buď je logování vypnuté (docela pochybuji), nebo se možná jen nedíváš do správného logu. Nechej vyplou Tracy a hledej, kam se zalogovalo, může to být v /log/ v rámci aplikace, může to být ve /var/log/ (dle OS a HTTPD). Tam najdeš pravý důvod, který budeš poté řešit.

Ztráta přihlášení může spíše souviset s omezením pro cookie. Když zmiňuješ routování, jede vše v rámci stejné (sub)domény?

MajklNajt
Člen | 498
+
+1
-

ak ti blbne prihlásenie a súčasne padá grid, mohol by byť problém aj so sessions, ale ako písal Kamil, bez bližšieho popisu z logu je to len tápanie…

grovik
Člen | 72
+
0
-

Zdravím,
šel jsem po všem a zdálo se, že je to OK. Ale po aktualizaci kódu na serveru se to projevilo znovu.

Problém je, že na locálním vývojovém dockeru to běží.
Na serveru pokud zapnu debuging to taky běží.
Po jeho vypnutí to běží stále. Ovšem pokud aplikaci spustím bez debugu (Tracy) na začátku.. tak to prostě padá na některých stránkách na chybu 500.

Obecně platí že kód co běží na locále na serveru musím nejprve sspustit v debug modu a pak to běží (ale jak něco neproklikám tak to dělá zle).

Marek Bartoš
Nette Blogger | 1275
+
0
-

Smaž cache hned po nahrání souborů na server.

grovik
Člen | 72
+
0
-

To dělám.
Mažu jí rovnou ve scriptu co dělá aktualizace a hned taky nastavím práva, aby to nedržkovalo, že nemůže zapisovat.

MajklNajt
Člen | 498
+
+2
-
  1. najprv zisti, prečo ti Tracy neloguje chyby
  2. potom pošli výpisy z logu
  3. potom problém vyriešime

v opačnom poradí to nejde…

grovik
Člen | 72
+
0
-

Logy jsem našel, byla to stopovačka. Mám! Díky za nápady.
Teď jsem si dal extra záležet abych měl všechny kroky.

  1. Nasadil jsem z Githubu novou verzi a nastavil jsem korektné práva na LOG a TEMP. Vypínám DEBUG mode (FALSE)
  2. Smazal jsem TEMP.
  3. Udělal jsem aktualizaci DB.
  4. Znovu jsem smazal TEMP.

Dostal jsem tyhle chyby:
`
[2024–11–07 00–31–02] Latte\RuntimeException: Cannot include undefined block ‘scripts-user’. in /var/www/virtualniazyl/vaz/vendor/latte/latte/src/Latte/Runtime/Template.php:247 @ http://pbxstats.com/…itory.php:51 @@ exception–2024–10–27–13–38–8ad609b357.html
[2024–11–07 00–31–24] Doctrine\DBAL\Exception\InvalidFieldNameException: An exception occurred while executing a query: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘n0_.azyl’ in ‘field list’ #1054 in /var/www/virtualniazyl/vaz/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php:67 caused by Doctrine\DBAL\Driver\PDO\Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘n0_.azyl’ in ‘field list’ #1054 in /var/www/virtualniazyl/vaz/vendor/doctrine/dbal/src/Driver/PDO/Exception.php:28 caused by PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘n0_.azyl’ in ‘field list’ #42S22 in /var/www/virtualniazyl/vaz/vendor/doctrine/dbal/src/Driver/PDO/Statement.php:130 @ https://beta.virtualniazyl.cz/ @@ exception–2024–11–07–00–31–014e3d03bb.html
[2024–11–07 00–33–47] Error: Failed opening required ‘/var/www/virtualniazyl/vaz/temp/proxies/__CG__AppModelOrmEntityUsers.php’ (include_path=‘.:/usr/share/php’) in /var/www/virtualniazyl/vaz/vendor/doctrine/common/src/Proxy/AbstractProxyFactory.php:197 @ https://beta.virtualniazyl.cz/ @@ exception–2024–11–07–00–33–391efc3f85.html`

Tak byly v LOGU.
Mám stažené i ty HTML exception, ale podle mě to není zase tak zajímavé.

5.Teď zapínám DEBUG na TRUE.
6.Web naběhne. Vše je OK.

V logu přibude tohle:
`[2024–11–07 00–37–10] Latte\RuntimeException: Cannot include undefined block ‘scripts-user’. in /var/www/virtualniazyl/vaz/vendor/latte/latte/src/Latte/Runtime/Template.php:247 @ http://pbxstats.com/…itory.php:31 @@ exception–2024–10–27–13–38–8ad609b357.html
[2024–11–07 00–37–21] Latte\RuntimeException: Cannot include undefined block ‘scripts-user’. in /var/www/virtualniazyl/vaz/vendor/latte/latte/src/Latte/Runtime/Template.php:247 @ http://pbxstats.com/…photos.latte @@ exception–2024–10–27–13–38–8ad609b357.html
[2024–11–07 00–43–24] Latte\RuntimeException: Cannot include undefined block ‘scripts-user’. in /var/www/virtualniazyl/vaz/vendor/latte/latte/src/Latte/Runtime/Template.php:247 @ http://pbxstats.com/…efault.latte @@ exception–2024–10–27–13–38–8ad609b357.html`

7. vypínám DEBUG mód
Web ale běží. V logu je navíc tohle. Ale to je podle mě nějaký pokus o to je nějaký nesmysl.

`[2024–11–07 00–46–23] Latte\RuntimeException: Cannot include undefined block ‘scripts-user’. in /var/www/virtualniazyl/vaz/vendor/latte/latte/src/Latte/Runtime/Template.php:247 @ https://[2a03:3b40:3::7]/manage/account/login @@ exception–2024–10–27–13–38–8ad609b357.html
[2024–11–07 00–50–27] Latte\RuntimeException: Cannot include undefined block ‘scripts-user’. in /var/www/virtualniazyl/vaz/vendor/latte/latte/src/Latte/Runtime/Template.php:247 @ https://[2a03:3b40:3::7]/admin/index.html @@ exception–2024–10–27–13–38–8ad609b357.html`

Budu muset pořešit nějaký FW nebo tak něco.
To je v kostce všechno. vidím tam ten blok script-user, ale ten se vyskytuje jen v některých šablonách a tam kde je tam je i vydefinovaný.

Na lokálním stroji v Dockeru s PHP 8.3 to nehodí do LOG ani řádek.

Doplnění o něco později, testování mě přivedlo k chybě se kterou jsem se už setkal:
vypadá takhle: https://virtualniazyl.cz/scrn.png

na stránce nejde na nic kliknout, protože se patrně nedogeneruje šablona.
V error.log je tohle:

`[2024–11–07 01–43–48] PHP Warning: require(/var/www/virtualniazyl/vaz/temp/proxies/__CG__AppModelOrmEntityAzyl.php): Failed to open stream: No such file or directory in /var/www/virtualniazyl/vaz/vendor/doctrine/common/src/Proxy/AbstractProxyFactory.php:197 @ https://beta.virtualniazyl.cz/azyl/animals?…
[2024–11–07 01–43–54] PHP Warning: require(/var/www/virtualniazyl/vaz/temp/proxies/__CG__AppModelOrmEntityAzyl.php): Failed to open stream: No such file or directory in /var/www/virtualniazyl/vaz/vendor/doctrine/common/src/Proxy/AbstractProxyFactory.php:197 @ https://beta.virtualniazyl.cz/azyl/animals?…
[2024–11–07 01–43–58] PHP Warning: require(/var/www/virtualniazyl/vaz/temp/proxies/__CG__AppModelOrmEntityAzyl.php): Failed to open stream: No such file or directory in /var/www/virtualniazyl/vaz/vendor/doctrine/common/src/Proxy/AbstractProxyFactory.php:197 @ https://beta.virtualniazyl.cz/azyl/animals `

Editoval grovik (7. 11. 2:51)

MajklNajt
Člen | 498
+
+1
-

v logu máš všetko, čo potrebuješ vedieť:

  1. niekde sa snažíš použiť blok scripts-user, ktorý nie je definovaný (Cannot include undefined block ‘scripts-user’) – preto sa ti ani nedogeneruje šablóna
  2. nemáš zosynchronizovanú databázu s entitami, pre nájdenie rozdielov použi php bin/console.php o:s:u --dump-sql
  3. v produkcií sa ti proxy negenerujú automaticky, musíš si ich vygenerovať lokálne a potom deploynúť, alebo si zapni v nettrine konfigurácií autoGenerateProxyClasses
nettrine.orm:
    configuration:
        autoGenerateProxyClasses: true
grovik
Člen | 72
+
0
-

Díky.
Ten block je nějaký fail, protože to jsem samozřejmě už hledal a prostě není. :-/ objevuje se jen v cache. Což mi pořád vrtá hlavou kde by se vzal :-/.
Ale Ok zkusím ještě prohledat.
Tu Proxy jsem nevěděl. Zkusím na to mrknout.

Ještě k těm Entitám… když se kouknu do DB a nechám si to vypsat tak i když to proběhne jakože Schema Update v pořádku. Tak mi to pořád vyhazuje aktualizace ENUMU. Což dělá od začátku.

Editoval grovik (7. 11. 18:49)