Quick start – forbidden

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

Ahoj,
v PHP a MySQL začínám, tak prosím o shovívavost.
Pracuji dle Quick startu – návodu a při zobrazení index.php v prohlížeči mi laděnka hází chybu:

Line 110: throw new InvalidStateException(„Cannot send header after HTTP headers have been sent“.

Když otevřu šablonu Default.default.phtml, tak dostanu hlášku:

Forbidden
You don't have permission to access /prvni nette/app/templates/Default.default.phtml on this server.

Stáhnul jsem si zip kódy a porovnal se svými a žádné rozdíly tam nevidím.
Ty se přitom zobrazují správně.
Poradí mi někdo kde dělám chybu?
Předem dík
P.S. Když v adresáři app vytvořím svůj soubor

<?php
echo "Ahoj";
?>

tak mi taky dá Forbidden…viz. výše

Ondřej Mirtes
Člen | 1536
+
0
-

To, že není /app/ přístupná z venku je správně. Je to díky deny from all v .htaccess.

Jak má vypadat složková strukture najdeš tady: https://doc.nette.org/…ry-structure – máš složku s nette aplikací s třemi podsložkami: app/ (PHP zdrojáky a .phtml šablony), root/ (nebo libovolný jiný název, který vyjadřuje, že Apache smí jen sem) a libs/ (knihovny, např. Nette, dibi a Texy).

Jinak tvůj error nevím čím je, chtělo by to asi postnout celou call stack…

aha
Člen | 9
+
0
-

Dík za odpověď, akorát to >postnout celou callstack< nemá IMHO moc logiku, protože vše dělám dle návodu (tím pádem mám v pořádku adresářovou strukturu) i umístění a názvy souborů (kontrolováno – důkladně). Soubory (obsah), kopíruju z quick startu. Vše by tedy mělo fungovat tak, jak je to v QS popsáno. A navíc, nevím co to je >postnout…atd.<
:-)))

Editoval aha (27. 6. 2009 22:09)

aha
Člen | 9
+
0
-

Takže udělal jsem si nový projekt z adresáře (v PSPadu ze staženého a rozbaleného DataGrid). Teď už to funguje až do chvíle kdy se v presenteru připojuje databáze. Tam laděnka dává tuto chybu:
DefaultPresenter::require_once() [function.require]: Failed opening required ‚C:\www\DataGrid.part1\document_root/../libs/dibi/dibi.php‘ (include_path=‚.;C:\Program Files\VertrigoServ\Smarty‘)
a to nevím kde opravit. Asi jsem na ten tut moc velká lama.

Ondřej Mirtes
Člen | 1536
+
0
-

Prostě ulož tu stránku s exception a někam jí uploadni :) Případně by mohl stačit screenshot.

Ad dibi – očividně k němu vede špatná cesta, nebo ho tam nemáš. Máš v adresáři libs/dibi/dibi.php? Máš správně nadeklarovanou LIBS_DIR v index.php?

Honza Kuchař
Člen | 1661
+
0
-

Ad: Cannot send header after HTTP headers have been sent je nejspíš způsobeno bílím znakem před začátkem souboru. Velmi nepříjemná záležitost. (tzv. UTF8 BOM – 3 uvozovací znaky, které PHP neignoruje → odešle výstup a ty si potom nenastavíš žádné hlavičky) Tady na fóru jsem posílal jednou krátký skript na odstranění BOMu ze začátku souboru.

//EDIT: ten skript: https://forum.nette.org/…already-sent?…

Editoval honzakuchar (27. 6. 2009 23:16)

aha
Člen | 9
+
0
-

LastHunter,
dík, správně jsi mě navedl. Měl jsem v umístění dibi jednu „obalovou“ složku navíc – jak jsem dibi rozbaloval. Moje umístění bylo:

/libs/dibi/dibi/dibi.php. Teď už to chodí. Jdu zapokračovat :-)