error 500

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

Mám zajímavý problém. Nahrál jsem si Nette aplikaci na server pro test a háže mi to error 500 (viz. http://nette.itstudent.cz/document_root/). Soubor htaccess jsem smazal, ale chyba přetrvává. Na localhostu mi aplikace normálně běží. Není nějaká složitá, využívá routování, šablony a přístup k databázi pomocí dibi.

Jako dodatek přidávám checker http://nette.itstudent.cz/checker.php

romansklenar
Člen | 655
+
0
-

Máš v document_root/.htaccess toto?

# mod_rewrite
RewriteEngine On
RewriteBase /

btw: pozor na to – http://nette.itstudent.cz/app/config.ini

Honza Marek
Člen | 1664
+
0
-

A temp má právo na zápis?

vlki
Člen | 218
+
0
-

Řekl bych, že to bude nějaká výjimka odchycená ErrorPresenterem.

Zkus logovat chyby. Stačí vytvořit složku log v /app (+ nastavit práva) a mělo by se to v produkčním módu samo zapisovat. Hledanou chybu pak zjistíš z toho.

Kenn
Člen | 110
+
0
-

V .htaccess mám toto

# disable directory listing
Options -Indexes

# configure PHP
<IfModule mod_php5.c>
   php_flag magic_quotes_gpc off
   php_flag register_globals off
</IfModule>

# mod_rewrite
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /

	# front controller
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_FILENAME} !-l
	RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Bohužel aplikace nenabíhá i když htaccess smažu.

Temp zápis má, v logu se nic neobjevuje :-)

romansklenar
Člen | 655
+
0
-

Ješte zkontroluj právo pro zápis do app/log.

vlki
Člen | 218
+
0
-

Nebo si na chvíli zapni vývojové prostředí… Chyba se ti ukáže hned a v celé kráse:)

Debug::enable(Debug::DEVELOPMENT);
Kenn
Člen | 110
+
0
-

Tak jsem pokročil z 500 na 404 :-). Log jsem vyprázdnil a teď už žádné chyby neháže. V document_root adresáři je samozřejmě pořád stejný index.php a .htaccess

edit: nette si v tempu stále vytváří cache, což je divné vzhledem k tomu, že stránka píše 404

Editoval Kenn (6. 4. 2009 12:11)

vlki
Člen | 218
+
0
-

Předpokládám, že jsi svou aplikaci stavil na příkladu skeleton z distribuce, ne?

Pokud ano, tak 404 v produkčním módu znamená odchycení výjimky BadRequestException. Což bude nějaké špatné routování.

A i když se nic nezobrazuje, tak se ti určitě bude kešovat minimálně RobotLoader.

pheidrich
Člen | 11
+
0
-

Hostingem to nebude, na gigaserver.cz mi Nette běží bez problémů.

Jak už bylo řečeno, zapni si Debug::enable(Debug::DEVELOPMENT); a hned uvidíš…

A změň si tu adresářovou strukturu! Pořád máš přístupné některé soubory, které by měly být raději jinde (http://nette.itstudent.cz/…ootstrap.php).

  1. adresáře app, libs, log.. dej třeba do /pokusy-nette/
  2. obsah document_root dej přímo do /nette.itstudent.cz/
  3. změň cesty v /nette.itstudent.cz/index.php
cuga
Člen | 210
+
0
-

pozor na jednu vec :) taky sem se nachytal… mel sem na ostrem serveru 500, sessions, log i temp prava 777, tak si rikam „ajta krajta“… a v cem byl problem? ne log, ale logs :) na testovacim serveru pohoda, protoze logs nepotreboval, ale na ostrem si to asi kontroluje a hned byl ohen na strese :)

vlki
Člen | 218
+
0
-

No, podle api by to mělo být log.

Každopádně chvilka ladění a problém se vždy najde. Laděnka se nesnaží házet klacky pod nohy. Ta spíš pokládá koberec:)

Kenn
Člen | 110
+
0
-

Už jsem se dostal do stádia kdy mi funguje všechno, „jenom“ hlavní stránka ne :-). Fungují všechny routy tak jak by měly, jenom hlavní stránka pořád píše 404

Ola
Člen | 385
+
0
-

Co tam máš za routy?

Kenn
Člen | 110
+
0
-
$router[] = new Route('<presenter>/<nazev>', array(
    'presenter' => 'Default',
    'view' => 'Default',
    'nazev' => NULL,
));


$router[] = new Route('kocarek/<nazev>', array(
	'presenter' => 'Kocarek',
	'view' => 'Default',
    'nazev' => 'nazev',
));

$router[] = new Route('<presenter>/<view>/<nazev>', array(
    'presenter' => 'Default',
    'view' => 'Default',
    'nazev' => NULL,
));

Editoval Kenn (6. 4. 2009 15:58)

Ola
Člen | 385
+
0
-

Máš tam presenter default? Protože třeba adresa default/something Ti taky hodí 404 .. Kdyžtak ještě ukaž definici actionDefault (nebo renderDefault),

Editoval Ola (6. 4. 2009 16:31)

Kenn
Člen | 110
+
0
-
public function renderDefault()
{
	$dotaz = $this->db->query('SELECT * FROM kocarky_kocarky');
	$this->template->kocarky = $dotaz->fetchAll();

}

Divné je, že na localhostu všechno šlapalo jak hodinky.

Jo a už jsem předělal adresářovou strukturu, takže už není adresář document_root, ale soubory z document_root jsou v rootu webu, tj. na http://nette.itstudent.cz.

Editoval Kenn (6. 4. 2009 16:57)

Ola
Člen | 385
+
0
-

Zkoušels již příkaz Debug::enable(Debug::DEVELOPMENT);

Editoval Ola (6. 4. 2009 18:03)

Kenn
Člen | 110
+
0
-

Debug mám zapnutý pořád, ale laděnka nehlásí vůbec nic. Taktéž v logu není nic.

Nějaké další návrhy? Hraju si s tím celé odpoledne, ale pořád žádný výsledek. Hlavní stránka funguje pouze pokud vypnu routování.

Editoval Kenn (6. 4. 2009 18:09)

romansklenar
Člen | 655
+
0
-

Nechceš radši poslat přístupy ať tady nepleníme celé vlákno?

Kenn
Člen | 110
+
0
-

Ok, můžeš se mi ozvat třeba na ICQ(237235420) nebo jabber(mrtvykenny@jabbim.cz)? E-mail je trošku nepohodlný :-)

phx
Člen | 651
+
0
-

Hodte sem pak kdyztak pro ostatni popis cim to bylo:)

Kenn
Člen | 110
+
0
-

Default.default.phtml není pro linux totéž jako Default.Default.phtml :-) Tudíž pro Nette chybějící šablona a proto to na localhostu (windows) fungovalo.

romansklenar
Člen | 655
+
0
-

Tam byl název šablony dobře (Default.default.phtml), ale v routeru byl action => 'Default' s velkým D, proto ta chyba na úvodní stránce když ostatní fungovaly.