Autor Zpráva
Joker
Profil
Autor: Joker
Odkaz na aktuální verzi textu: Základní kurz 5: Hledání a oprava chyb ve skriptu
Zveřejněno
Odkud se vede diskuse k aktuálnímu stavu textu:
První příspěvek po poslední revizi textu
Joker
Profil
Vzhledem k délce diskuse u ostatních kapitol mě trochu udivuje, že k téhle nikdo nemá žádné poznámky a doplnění.
martin1312
Profil
Nie som v PHP expert, ale obsahovo sa mi to pozdáva. Možno by si sa mohol zmieniť aj o vlastných chybových hláškach (trigger_error).
Jan Tvrdík
Profil
Joker:
Uložte do kořene webu třeba jako priklad_chyba.php a zkuste stránku zobrazit.
Pořád jsme hodně v začátcích, takže bych explicitně uvedl, že mají otevřít http://localhost/priklad_chyba.php.

Jak se k chybové hlášce dostat?
IMHO zbytečně odborné pro začátečníka. Předpokládej, že error_reporting je nastavený na E_ALL resp. E_ALL | E_STRICT v PHP < 5.4.

v PHP 5 zaznamená všechna upozornění kromě Strict standards, v PHP 6 bude zaznamenávat i Strict standards
PHP 6 nikdy nezmiňovat, nikdo netuší, jak bude vypadat. E_ALL obsahuje E_STRICT od PHP 5.4.

Upřesnění chyby
Spíš bych asi řekl „popis chyby“.

Varování může generovat třeba pokus o vložení neexistujícího souboru do stránky pomocí příkazu include.
IMHO mnohem častější příčinou warningu je volání PHP funkce se špatnými argumenty.

Ve skriptu nastala situace, která bývá projevem chyby, ale může k ní dojít i při normálním běhu.
Hlášení typu Notice (poznámka) znamenají problémy, které většinou nejsou závažné bezprostředně, přesto mohou znamenat třeba problém v zabezpečení skriptu a podobně, takže je vhodné je prověřit.
Tady bych si dovolil nesouhlasit. Při běžném běhu skriptu by rozhodně nemělo docházet ani k chybám E_NOTICE.
Dovolím si citovat Davida Grudla (zdroj): „Na uvedeném příkladě vidíte, že je nutné bedlivě sledovat chyby úrovně E_NOTICE. Vnímám je jako upozornění na nejzávažnější chyby v kódu.“

Hlášení typu Deprecated a Strict standards obvykle neznamenají přímo chyby, ale potenciální problémy ohledně
kompatibility a interoperability (spolupráce s jinými skripty). Je vhodné se jimi zabývat při příštích změnách
ve skriptu.

Opět si dovolím nesouhlasit. Pokud napíšu skript, který generuje E_DEPRECATED nebo E_STRICT, tak to pochopitelně budu řešit okamžitě. Ignorovat ty chyby má smysl pouze v případě, že mám starý kód, který ty chyby generuje a momentálně nemám čas je řešit. Nově napsaný kód ale nesmí v žádném případě generovat ani jednu z těchto chyb.
Joker
Profil
martin1312:
Možno by si sa mohol zmieniť aj o vlastných chybových hláškach (trigger_error).
To jsou příliš pokročilé věci na základní kurz pro začátečníky.

Jan Tvrdík:
Aktualizoval jsem text.

Pořád jsme hodně v začátcích, takže bych explicitně uvedl, že mají otevřít http://localhost/priklad_chyba.php.
Ale na tohle jsem zapomněl, ještě to doplním.

IMHO zbytečně odborné pro začátečníka. Předpokládej, že error_reporting je nastavený na E_ALL resp. E_ALL | E_STRICT v PHP < 5.4.
Pravděpodobnost, že čtenář v některých případech uvidí jen prázdnou stránku, mi nepřijde tak malá. Třeba když nahraje chybu přímo na hosting, spousta z nich má display_errors off (a pro hosting to samozřejmě je rozumné nastavení).

Ale napadlo mě, když jsem mluvil o FAQ k učebnici (a počítám s tím, že bude), mohlo by tam být i toto a v kapitole by byl jen odkaz.

E_ALL obsahuje E_STRICT od PHP 5.4.
Opravil jsem.

Spíš bych asi řekl ‚popis chyby‘.
Změnil jsem.

IMHO mnohem častější příčinou warningu je volání PHP funkce se špatnými argumenty.
Ony se základy syntaxe později docela hodně rozrostly a tenhle text stavěl ještě na tom, že tam je vysvětlené jen echo a include. Ještě se nad tím zamyslím.

Při běžném běhu skriptu by rozhodně nemělo docházet ani k chybám E_NOTICE.
To nemělo.
Upravil jsem ve shrnutí část ohledně E_NOTICE tak, aby víc nabádala k jejich opravení.

Ignorovat ty chyby má smysl pouze v případě, že mám starý kód, který ty chyby generuje a momentálně nemám čas je řešit. Nově napsaný kód ale nesmí v žádném případě generovat ani jednu z těchto chyb.
Přesně tak jsem to myslel, jen asi ta myšlenka nebyla ideálně formulovaná. Doufám, že teď je to lepší.
Tori
Profil
K úvodní ukázce chyby "unexpected $end": Tento kód chybu žádnou negeneruje, musel by zároveň chybět kromě středníku i koncový PHP tag. Tento typ chyby by bylo asi lepší ukázat na chybějícím uzavření bloku (podmínka, cyklus), ze zatím probraných věcí např. neuzavřený řetězec nebo "unexpected T_ECHO":
<?php
echo 'hokus'
echo 'pokus'
?>
Jan Tvrdík
Profil
• „První je error_reporting“ – doplň odkaz do dokumentace
• „display_errors a log_errors“ – to samé
• „Hláška se dělí na několik částí“ – zformátovat jako seznam
• „Vyzkoušejte si“ – zformátovat jako seznam
anonymní
Profil *
Tento dotaz bude nejspíše na Jokera.

Kdy vyjde další díl učebnice na webu? V pořadí další je tento, proto se ptám zde.

Na učebnici rád odkazuji, ale chtělo by to opět o kus pokročit. Připravených a okomentovaných kapitol je zde na fóru několik, dočkáme se v brzké době uveřejnění?
Kubo2
Profil
Joker:
Možno/pravdepodobne si na to nájdem čas cez Vianoce, takže ak by si bol taký láskavý a odsúhlasil mi registráciu na http://pehapko.cz/, mohol by som s tým pohnúť.

anonymní:
To teda bude, akurát táto kategória sa mi zdá už pekných pár mesiacov mŕtva.
Joker
Profil
anonymní:
Kdy vyjde další díl učebnice na webu?
Napsal jsem to raději sem.
Jinak 5. kapitola je téměř připravená, takže „když už se k tomu dostanu“ (ve smyslu budu udělám si těch pár hodin času), bude pak hned zveřejněná.

Kubo2:
Možná bych nejdřív poprosil o nějaké ukázky ve smyslu doporučení pro potenciální autory.
Kubo2
Profil
[#10] Joker:
Ach, úplne som na to zabudol. Ale napíšem to inokedy (v čo najbližšej dohľadnej dobe), musím sa niekedy predsa venovať aj škole – mám napísať dvojstranový čistopis slohu na tému Slávnostné ukončenie školského roka — slávnostný prejav :-)
Kubo2
Profil
Joker:
Tak, a je to. Ale napísal som to do vlákna, kde je môj príspevok relevantnejší ako tu.
Joker
Profil
anonymní:
Kdy vyjde další díl učebnice na webu?
Tak už konečně vyšel.

Zveřejněná podoba textu zohledňuje připomínky z [#6] a [#7].
Tori
Profil
Drobnosti:
- „zkuste například tento kód:“ - velké písmeno (první odstavec)
- „To nejmenší, co můžete udělat je vložit text chybové hlášky do vyhledávače.“ - chybějící čárka (#reakce-na-chybu, předposl. odst.)
- „Hlášení typu Notice (poznámka) znamenají problémy, které často neznamenají akutní problém a skript funguje, nebo se zdá, že funguje.“ - Snad by to šlo i takto: „Hlášení typu Notice (poznámka) bývají často způsobená jen zanedbatelnými maličkostmi v kódu a skript funguje, nebo se aspoň zdá, že funguje. Ovšem právě ...“ (#typ-chyby, poslední odst.)

Vaše odpověď

Mohlo by se hodit

Ostrá verze učebnice běží na www.pehapko.cz.

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: