Autor Zpráva
H13
Profil
Ahoj, existuje nějaká možnost jak předejít zastavení skriptu při Fatal error...

jde o to aby skript běžel dále nebo aby vygeneroval vlastní chybu, kde by např mohl být link na opuštění stránky...

něco ve smyslu try catch, ale i pro PHP4

Díky
panhuhu
Profil
Potlačit to můžeš přidáním @ před název fce.
panhuhu
Profil
Hezké počteníčko přímo od Zendu.
Alphard
Profil
@ je k ničemu
fatal error zastaví provádění scriptu, pouze se nevypíše chyba
H13
Profil
@ ... ano nemá vliv na zastavení skriptu


Zend:
1 - řešení: // report no fatal errors
error_reporting(~E_ERROR);

Keep in mind, though, that just because the error isn't being reported doesn't mean it isn't occurring. Although the script above will not display a visible error message, script execution will still stop at the point of error and statements subsequent to that point will not be executed. error_reporting() gives you control over which errors are displayed; it doesn't prevent the errors themselves.

To první řešení zřejmě fungovat taky nebude

2 -řešení: set_error_handler('oops');
For example, a fatal E_ERROR will prevent the PHP script from continuing, therefore it can never reach a user-created error-handling mechanism

a tohle zřejmě taky ne :-(
panhuhu
Profil
H13
Dávám do placu spontání nápady ;). Co se týče toho linku, šlo by použít ini_set('error_append_string',$string). Jako návod by mohl složit komentář v php dokumentaci. Otázka co na to hosting.

Dle mého názoru fatal error v php4 asi nezastavis. Jedine co jeste mozna muzes udelat je pouzit register_shutdown_function. Kdyz se smiris s tim ze prohlizeci uz nic neposles.

Jako reseni vidim nepouzivat php4, stejne uz mu brzo skonci podpora (jestli uz se tak nestalo).
H13
Profil
No, jenže když to tak zkouším, tak jsem zjistil že i PHP 5 a try, catch nepomůže, protože Fatal errors se prostě nedají podchytit...

To znamená, že např. GD funkce ImageCreateFromJPEG() je zřejmě (podle mého zjištění a mých neprofesionálních znalostí) chybně napsaná, protože při neúspěchu sice vrátí nulu, ale vrátí také Fatal error (v případě nedostatku paměti pro vytvoření obrázku)... možná za to nemůže tato funkce ale jiná, kterou ImageCreateFromJPEG() případně volá ???
DoubleThink
Profil *
možná za to nemůže tato funkce ale jiná
Funkce za to nemůže - Fatalní chybu vyvolá samotné jádro PHP, protože dojde k překročení memory_limitu.

Jinak z logiky věcí je zotavení u run-time fatálních chyb docela nemyslitelné. Víc paměti proces (třeba) dostat nemůže, náhodně část vysypat taky nemůže. Takže game-over.
H13
Profil
ok, díky všem, jsem zase o něco chytřejší

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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