Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Java. Zároveň využij akce až 80 % zdarma při nákupu e-learningu. Více informací:
Avatar
Jaroslav Merta:7.3.2021 21:47

Kontext:
Vytvořil jsem web založený na univerzálním frameworku MVC, který je součástí zdejšího kurzu E-shopu v PHP:
https://www.itnetwork.cz/…rava-pohledu

Nahrál jsem web na hosting Onebit, jehož původní adresářová struktura je:
root/
- www (složka)
- symlink(symbolický odkaz na doménu bez prefixu www)

Problém:
Když nahraju web do adresáře www, najde si to správně index.php (/public/index.php) podle .htaccess (což je zachováno ze zdejšího kurzu >>uvedeného výše), ale nefunguje to (HTTP ERROR 500).

Domněnky k možnému řešení:

  • autoloader nenačítá soubory tak, jak má, protože v adresářové struktuře je nechtěný mezičlánek, a to WWW adresář za ROOT adresářem (root/www/...) a tak to správně nereflektuje ani NAMESPACE souborů.
  • jestli je tahle domněnka správná, potřebuju ten web nahrát přímo do ROOT adresáře, ale hosting všechno přesměrovává do WWW adresáře, pokoušel jsem se to přenastavit skrz .htaccess, leč neúspěšně, měl jsem z toho pocit, jako by .htaccess v ROOT vůbec nefungoval. Původní .htaccess z kurzu v ROOT adresáři také nefungoval, pořád mi to házelo WWW adresář za doménu v URL...

Závěr
Je možné nějakou direktivou v .htaccess tohle chování spravit? Nebo je vůbec moje dedukce vedená správným směrem? Poprvé nahrávám web na hosting a tohle mi přijde jako nejpravděpodobnější příčina mého problému.

Díky za jakékoliv rady!

Editováno 7.3.2021 21:47
 
Odpovědět
7.3.2021 21:47
Avatar
Odpovídá na Jaroslav Merta
Jaroslav Merta:8.3.2021 14:44

Problém vyřešen! Začátečnická chybička, která mě stála 3 dny nervů a opětovného hledání zenu :-)

Co mi pomohlo zjistit příčinu:
V administraci Onebit je možné nastavit vypisování chyb PHP. Takže místo obecných chyb http protokolu se mi začali vypisovat konkrétní soubory, které aplikace nemůže dohledat.
Nefunkčnost skutečně vyvolával autoloader.php, ale příčina byla v mé nedůslednosti v pojmenování tříd!
Soubor třídy jsem nechtěně pojmenoval Webpage.php, ale třída se jmenovala WebPage, to je moje varianta třídy Article, takže se web zasekl hned u vstupu.

To je celé!

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
8.3.2021 14:44
Avatar
Odpovídá na Jaroslav Merta
Jaroslav Merta:8.3.2021 16:08

Ještě dodám, že na localhostu mi apache nerozlišoval velká a malá písmena v pojmenování souborů a tříd, proto jsem to při testování neodhalil a tahle možnost mě ani nenapadla na produkci. Neměl jsem tušení, že to vůbec na apachi nastavit jde :-)

 
Nahoru Odpovědět
8.3.2021 16:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.