Nefunkční aplikace na webhostingu

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

Dobrý den,
zkusil jsem si svojí aplikaci přenést na webhosting a tam mi nefunguje. Prohlížeč mi hlásí error 500 a když se podívám do error logu serveru, tak tam vidím „GET /tzn/index.php HTTP/1.1“ 404 – „-“ přitom do prohlížeče jsem zadával úplnou cestu k tomu souboru index.php
Jedná se o webhosting pipni.cz, kde ve FAQ popisují chyby 500 jako problém s .htaccess, takže jsem zkusil .htaccess smazat a stále mi to hlásí stejnou chybu. Temp adresář jsem vždy před dalším pokusem vymazal a v něm se objevují jen dva soubory (a vytvoří se jen když mám smazaný .htaccess) – temp/cache/_Nette.RobotLoader/_bddc88a1e51e15d760f427c3fcac34ba o velikosti 2024 bajtů a temp/cache/Nette.Configurator/Container_4e12ad4b67.php.lock s nulovou velikostí.
Poradí mi někdo, kde hledat chybu?

David Matějka
Moderator | 6445
+
0
-

Ten err 500 je od nette nebo od web serveru?

Mirek
Člen | 86
+
0
-

ten error 500 je od serveru, laděnka se ke slovu nejspíš vůbec nedostala, aby hlásila nějaké chyby

srigi
Nette Blogger | 558
+
0
-

Skus si v php.ini na serveri nastavit error_reporting = E_ALL.

Mirek
Člen | 86
+
0
-

Bohužel se neumím dostat k php error logu, takže nastavení error_reportingu mi nepomůže. Napsal jsem na podporu webhostingu, jestli mi nějak nedokáží poslat ten error log, ale zatím bez odpovědi. Jediné co mám je access log z apache.

srigi
Nette Blogger | 558
+
0
-

No prave, ked nastavis error_reporting + (som zabudol napisat) nastavis display_errors=On, tak ten error ti vyskoci na stranke. Poriadne si prejdi tu prvu tretinu php.ini a nastav to na max.

Mirek
Člen | 86
+
0
-

No já s tím na tom webhostingu moc neudělám, nicméně podle phpinfo je display_errors=On pomocí ini_set(‚error_reporting‘, ‚32767‘) si můžu nastavit error_reporting na E_ALL, ale stále mi to hlásí ten error 500 a nevypisuje to žádnou chybu.
Vkládáním exit jsem zjistil, že chybu vyvolává

<?php
$container = $configurator->createContainer();
?>

v bootstrap.php (když je exit před tím, tak se mi vrátí prázdná stránka, když je exit za tím, tak už mi to vrací ten error 500), ale stále nevím co s tím.

Jen pro pořádek, php je verze 5.6.10

Editoval Mirek (5. 12. 2016 11:29)

Mirek
Člen | 86
+
0
-

Tak jsem se dostal až do ContainerLoader.php, kde chybu způsobuje volání funkce call_user_func_array($generator, [& $compiler])protected function generate($class, $generator)

Mirek
Člen | 86
+
0
-

Tak jsem proniknul zase o kousek dál a jsem v Compiler.php v metodě generateCode(), která má vracet $classes, ale když dám exit těsně před ten return, tak se mi v pořádku zobrazí prázdná stránka, ale jakmile ten exit zruším, tak se mi objeví ten error 500 a stejně tak se mi objeví ten error, pokud před tím returnem se pokusím zobrazit obsah té proměnné $classes pomocí print_r().

srigi
Nette Blogger | 558
+
0
-

Nie je lepsie zmenit hosting? Predstav si, ze takto budes ladit v pokrocilom stadiu, ked bude appka 10× vacsia. Nechcem robit reklamu, ale napr. vo Websupporte si mozes server detailne ponastavovat, Apache logy najdes priamo na FTP.

Mirek
Člen | 86
+
0
-

Tak jsem se dostal k jádru problému – chybu dělá implode(„\n\n\n“, $classes) v Compiler.php na řádku 161 kde je to návratová hodnota z public function compile a nějak nevím co s tím – zkusil jsem si u sebe nainstalovat PHP 5.6.10, které mám na webhostingu, a u mě na localhostu to funguje i s touto verzí PHP. Tak netuším, co zde může být za problém, že funkce implode na poli objektů v $classes zhavaruje. Pole $classes sem si před tím implode vypsal pomocí print_r a zdá se, že obsahuje vše co má – vypadá podobně jako na localhostu.

Editoval Mirek (14. 12. 2016 13:09)

voda
Člen | 561
+
0
-

To by mohlo být memory_limitem. Na kolik je nastaven? Nejde zvětšit?

Mirek
Člen | 86
+
0
-

Memory limit je 512MB, což mi přijde docela hodně

chemix
Nette Core | 1310
+
0
-

Zkusil jsi spustit requirements checker https://nette.org/en/maintenance

Mirek
Člen | 86
+
0
-

Requirements checker jsem musel upravit, neboť psal, že se dá spustit jen na localhostu a výsledek je uspokojivý – viz http://nette.svrcek.cz/nette.gif

chemix
Nette Core | 1310
+
0
-

@Mirek a kolik veci mas v DIC? jakozto polozek? 10ky? do 100? 100vky? vice? ze to padne na tom compileru…

z druheho pohledu. Pokud si vytvoris cisty nette sandbox a nahrajes ho na pipni tak funguje?

Mirek
Člen | 86
+
0
-

Nevím co je DIC – když jsem se tu snažil hledat, tak jsem vysvětlení téhle zkratky nikde nenašel.
A nefunguje ani sandbox, tak jak je v distribučním balíku s tou výchozí aplikací.

Gappa
Nette Blogger | 209
+
0
-

Mirek napsal(a):

Nevím co je DIC – když jsem se tu snažil hledat, tak jsem vysvětlení téhle zkratky nikde nenašel.
A nefunguje ani sandbox, tak jak je v distribučním balíku s tou výchozí aplikací.

To by měl být Dependency Injection Container, potomek Nette\DI\Container.

Mirek
Člen | 86
+
0
-

V config.neon mám definováno jen toto:
services:
router: App\RouterFactory::createRouter
 – App\Model\Authenticator
 – App\Model\StatRepository
 – App\Model\UzivatelRepository
 – App\Model\ZnamkaRepository

Mirek
Člen | 86
+
0
-

A na localhostu mi to běží s memory limitem 256MB a tohle hlásí tracy http://nette.svrcek.cz/info.gif

chemix
Nette Core | 1310
+
0
-

@Mirek tak pokud nebezi ani cisty sandbox, tak to je opravdu na kouknuti se po hostingu ktery je funkcni. Pokud to mas na hrani, tak doporucuju zkusit se kouknout treba na online ide c9 http://blog.honzacerny.com/…-cloud-9-ide. Pokud to mas na praci = dostavas za to $ a lidi plati za provoz, tak mrkni po hostingu co ti jde na ruku. U Blueboard.cz dostanes jako bonus deploy pomoci GIT a zbohem oldskůl FTP ;-) Nehazej si klacky pod nohy.