[2009-07-24] Debug – nesmyslné znaky (PHP 5.2)
- Ondřej Mirtes
- Člen | 1536
Jak nastavit správný MIME typ? V BasePresenteru či v DefaultPresenteru dejte do metody beforeRender toto:
Environment::getHttpResponse()->setContentType('text/html','utf-8');
Dále zkontrolujte, jestli máte uvedené utf-8 v meta tagu v HTML hlavičce:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- Slavista
- Člen | 11
Taky jsem to zaregistroval. Nevím… zdá se, že to dělá jen u některých chyb, např. při BadRequestException #404, při chybějící šabloně. U jiných se Laděnka zobrazí.
Server vrací 500 Internal Server Error a na stránku se nahrne nezpracovaná komprimovaná stránka.
Hlavička:
HTTP/1.x 500 Internal Server Error
Date: Thu, 30 Jul 2009 17:37:14 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
X-Powered-By: Nette Framework
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=1cbcc8fa5bee10984d676200de905767; path=/; httponly
Set-Cookie: nette-browser=0.809931669574; path=/; httponly
X-Wf-Protocol-dibi: http://meta.wildfirehq.org/Protocol/JsonStream/0.2
X-Wf-dibi-Plugin-1: http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.2.0
X-Wf-dibi-Structure-1: http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1
Content-Encoding: , gzip
Vary: Accept-Encoding
Content-Length: 9378
Connection: close
Content-Type: text/html
Pomůže ve FF v about:config nastavit network.http.accept-encoding jen na deflate.
- Slavista
- Člen | 11
To Juan: Jak zničí? Nic takového nepozoruji. Po reloadu všechny weby jedou, jen se nepoužívá gzip komprese.
Samozřejmě přiznávám, že je to jen obezlička, která mně pomáhá, než se zjistí, v čem skutečně čert vězí. Možná u tebe vězí ještě v něčem jiném, proto ty další problémy.
- Hynek
- Člen | 9
Tenhle problém jsem taky řešil při přechodu z 0.8 na 0.9.
Nakonec mě pomohlo tuším zakomentování Debug::enable(); v bootstrapu. Pak
už laděnka běžela jak má.
V change logu jsem viděl nějaké změny ohledne debugu, ale nečetl jsem si
je, tak jsem to přisuzoval tomu.
Jinak jsem taky na Ubuntu@firefox
Editoval Hynek (30. 7. 2009 21:31)
- Jan Jakeš
- Člen | 177
Tak jsem trochu pátral a problém způsobuje tento řádek:
header('Content-Encoding:', TRUE); // override gzhandler
Napadá mě… Nemělo by to stejnou funkci, kdyby tam byl poslán nějaký
„nesmysl“ – tzn. něco jiného, než gzip
,
deflate
, atd.? Myslím tím něco jako:
header('Content-Encoding: nejaky_nesmysl', TRUE); // override gzhandler
To už by zkousl i Firefox…
- romansklenar
- Člen | 655
Nemám to jak vyzkoušet, protože chyba se u mě neprojevuje – proto se
zeptám: Je třeba hlavičku i nahrazovat?
header('Content-Encoding: identity')
nebo
header('Content-Encoding: identity', TRUE)
?
- Slavista
- Člen | 11
header(‚Content-Encoding: identity‘)
header(‚Content-Encoding: identity‘, TRUE)
V obou výše uvedených případech je to bez problémů. Stejně tak i když celý řádek zakomentuji.
Při header('Content-Encoding: ', TRUE) vidím v hlavičce rozdíl jen
v čárce navíc:
rozsypaný čaj = Content-encoding: , gzip
- Hynek
- Člen | 9
Juan napsal(a):
Tím pouze vypneš laděnku. Uznávám, že těch nesmyslných znaků se tím zbavíš, ale to není to, co hledám :D
Pravda no, jsem si říkal že je ta laděnka v nové verzi nějaká divná. Po zakomentování debugu na mě při fatal errorech vyskakovala furt červená stránka, tak mě ani nenapadlo, že jsem ji vypnul. Myslel jsem si že se nově zapíná v development módu sama.
Jinak nastavení content-encoding na identity mě taky pomohlo .
- Jan Jakeš
- Člen | 177
romansklenar: Oba zápisy
header('Content-Encoding: identity')
i
header('Content-Encoding: identity', TRUE)
přepisují hlavičku.
Kdyby si chtěl údaj pouze do hlavičky přidat, muselo by tam být explicitně
uvedeno FALSE
. Hodnota TRUE
je tam implicitně, takže
se uvádět nemusí.
EDIT: Jinak zdá se, že takto s identity
to funguje bez
problémů.
Editoval Juan (31. 7. 2009 14:49)
- romansklenar
- Člen | 655
Jojo přesně tak, musí to David prohnat skriptem, který to přegeneruje pro různé verze a odešle na FTP a kdoví co ještě. Prý až nadejde ten čas, že se Nette bude psát v SVN pod PHP 5.3, tak snad bude součástí skript, který si může každý spustit u sebe.