Nette banan.cz – problem s hlavickou

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

Zdravím,

Tak už se mi podařilo dojednat přesunutí domeny na novou verzi php. Všechno celkem v pořádku až na jednu věc.
Mám BasePresenter, kde zjištuju jestli je uživatel přihlášený a podle toho dávám informaci. Ostatní presentery dědí právě od BasePresenteru. Tak a pokud v BasePresenteru zavolám metodu

if ($user->isAuthenticated())?>

dostanu odpověď :

Uncaught exception 'InvalidStateException' with message 'Headers already sent

Jak by se to dalo vyřešit?

phx
Člen | 651
+
0
-

Neodesilas nekde prazdny znak? Nektere editory davaji na zacatek UTF-8 souboru nejake 2 paznaky jako identifikace a apache je hned odesle a tudis jsou hlavicky uzavreny.

romansklenar
Člen | 655
+
0
-

Pak zkontroluj kódy, jestli nekdě v aplikaci něco nevypisuješ přes echo, var_dump, Debug::dump().

EDIT: phx byl rychlejší

Editoval romansklenar (13. 11. 2008 13:09)

TanisCZ
Člen | 80
+
0
-

No, je pravda, že mám celou aplikaci napsanou v utf-8, takže to ještě překontroluju.

TanisCZ
Člen | 80
+
0
-

Tak jste měli pravdu. Otevíral jsem utf-8 soubor v normální notepadu a ten prevít mi tam asi vložil nějaké paznaky. Znova jsem zkopiroval BasePresenter ze zalohy a uz to jede. Už je na čase, aby win platforma kompletně přešla na utf-8

David Grudl
Nette Core | 8218
+
0
-

Celé znění té výjimky je "Headers already sent (output started at file:line).", kde file a line dost napoví. Zkus se podívat na nezkrácené znění výjimky.

romansklenar
Člen | 655
+
0
-

Prázdný znak se ti tam může dostat, ikdyž máš třeba začátek nějakého php souboru odřádkovaný enterem.

------ tady je začátek souboru a po něm následuje jeden nebo více bílých znaků

<?php
// your nice code
...
David Grudl
Nette Core | 8218
+
0
-

…á-né-bó když je konec php souboru odřádkovaný enterem:

<?php
// your nice code

?>

------ tady je konec souboru

Řešení: nikdy nepoužívat ?>.

TanisCZ
Člen | 80
+
0
-

To jsem vůbec nevěděl. Takže vždycky musí být poslední znak ?> a nebo jak si myslel nikdy nepoužívat? ?>

romansklenar
Člen | 655
+
0
-

Tak, že když nebudeš používat ukončovací ?> tak tím nic nezkazíš, právě naopak. Není to nutné. BTW je tak psáno i celé Nette.

TanisCZ
Člen | 80
+
0
-

Tak jsem to vyzkoušel a opravdu to funguje :) Paráda