PDA

Bekijk Volledige Versie : php:set_error_handler



Jaap-Andre de Hoop
15/01/03, 07:57
Een 'raar' probleem.
Op widexs en op mijn eigen server heb ik dezelfde code staan (uit cvs
getrokken).

daar komt in voor:
set_error_handler ('error_handler');

en een functie genaamd error_handler (gedefinieerd in een bestand die ik
met require include), die het werk doet.

Op mijn server thuis werkt dit goed, en tot voor kort ook bij widexs
maar gister zag ik de volgende melding:
Warning: set_error_handler() expects argument 1, 'error_handler', to be a
valid callback in /path_to_file/index.php on line 8

Ik vermoed dat het verschil veroorzaakt wordt door een nieuwe
PHP-versie (4.3 widexs, 4.1.2 thuis), maar op php.net kan ik hiervoor
geen bevestiging vinden, laat staan een oplossing. Iemand hier?

Jaap-Andre

Jaap-Andre de Hoop
15/01/03, 13:40
In article <xD7V9.176059$xm4.7900329@Flipper>, doemaarietsanders@data-assist.nl (Jaap-Andre de Hoop) wrote:

[knip: set_error_handler werkt plotseling niet meer zoals eerst, maar op
ander systeem (nog) wel]

Ik heb het weer werkend gekregen. Hij lijkt de functie die
met set_error_handler gedefinieerd wordt, alleen te zoeken in het huidige
bestand en de includes/requires die hij al is tegengekomen voordat
set_error_handler wordt uitgevoerd.

dus bij:
set_error_handler('pietje');
include (bestand_met_functie_pietje);

gaat fout, maar
include (bestand_met_functie_pietje);
set_error_handler('pietje');

gaat goed.
Eigenlijk wel logisch, want ook die include kan fout gaan, maar toch had
ik graag een mailtje gehad van mijn error_handler om te weten te komen
dat die het niet meer deed ;-)

overigens hoeft de functie niet voor het aanroepen van set_error_handler
gedefinieerd te worden, dus
set_error_handler('pietje');
function pietje (bladiebla)
{echo "foutje";}

mag wel.

Jaap-Andre

Hans Wolters
15/01/03, 15:25
On Wed, 15 Jan 2003 12:40:02 GMT, Jaap-Andre de Hoop <doemaarietsanders@data-assist.nl> wrote:

> Ik heb het weer werkend gekregen. Hij lijkt de functie die
> met set_error_handler gedefinieerd wordt, alleen te zoeken in het huidige
> bestand en de includes/requires die hij al is tegengekomen voordat
> set_error_handler wordt uitgevoerd.
>
> dus bij:
> set_error_handler('pietje');
> include (bestand_met_functie_pietje);
>
> gaat fout, maar
> include (bestand_met_functie_pietje);
> set_error_handler('pietje');
>
> gaat goed.
> Eigenlijk wel logisch, want ook die include kan fout gaan, maar toch had
> ik graag een mailtje gehad van mijn error_handler om te weten te komen
> dat die het niet meer deed ;-)

Zo kan het nooit misgaan volgens mij :-)

if (!function_exists('pietje'))
include_once 'bestand_met_functie_pietje';

set_error_handler('pietje');

> overigens hoeft de functie niet voor het aanroepen van set_error_handler
> gedefinieerd te worden, dus
> set_error_handler('pietje');
> function pietje (bladiebla)
> {echo "foutje";}
>
> mag wel.

Eng :-)

Hans

--
Ik wil http://www.linux.nl wel overnemen voor het symbolische bedrag
van 1 EURO.

Jaap-Andre de Hoop
15/01/03, 15:36
In article <slrnb2armn.gd.hans@foo.bar>, h-wolters@nl.linux.org wrote:
>Zo kan het nooit misgaan volgens mij :-)
>
>if (!function_exists('pietje'))
> include_once 'bestand_met_functie_pietje';
>
>set_error_handler('pietje');

ben je paranoide of zo ;-)
beter misschien nog zelfs (pseudo):
include_once 'bestand_met_functie_pietje';
if (!function_exists('pietje'))
{
mail (mailadres,subject,"pietje is overleden",'headers_toch?');
echo "something terrible is going on, the webmaster has been notified,
please come back later";
exit;
}
else
set_error_handler('pietje');//hier misschien nog controle doen?


mmmm niet eens zo'n slecht plan....

Jaap-Andre

Hans Wolters
15/01/03, 15:45
On Wed, 15 Jan 2003 14:36:30 GMT, Jaap-Andre de Hoop <doemaarietsanders@data-assist.nl> wrote:

> In article <slrnb2armn.gd.hans@foo.bar>, h-wolters@nl.linux.org wrote:
>>Zo kan het nooit misgaan volgens mij :-)
>>
>>if (!function_exists('pietje'))
>> include_once 'bestand_met_functie_pietje';
>>
>>set_error_handler('pietje');
>
> ben je paranoide of zo ;-)

Ach, ik hou gewoon van werkende code :-)

> beter misschien nog zelfs (pseudo):
> include_once 'bestand_met_functie_pietje';
> if (!function_exists('pietje'))
> {
> mail (mailadres,subject,"pietje is overleden",'headers_toch?');
> echo "something terrible is going on, the webmaster has been notified,
> please come back later";
> exit;

Hier zou ik dan een header gebruiken om de bezoeker door te sluizen naar
een pagina waar ze kunnen lezen dat de sysop is gemailt met het probleem :-)

> }
> else
> set_error_handler('pietje');//hier misschien nog controle doen?

Groet,

Hans

--
Ik wil http://www.linux.nl wel overnemen voor het symbolische bedrag
van 1 EURO.

Jaap-Andre de Hoop
15/01/03, 16:32
In article <slrnb2astb.gd.hans@foo.bar>, h-wolters@nl.linux.org wrote:
>> beter misschien nog zelfs (pseudo):
>> include_once 'bestand_met_functie_pietje';
>> if (!function_exists('pietje'))
>> {
>> mail (mailadres,subject,"pietje is overleden",'headers_toch?');
>> echo "something terrible is going on, the webmaster has been notified,
>> please come back later";
>> exit;
>
>Hier zou ik dan een header gebruiken om de bezoeker door te sluizen naar
>een pagina waar ze kunnen lezen dat de sysop is gemailt met het probleem :-)

tenzij het script, die include_once uitvoert net de laatste pagina was
die verstuurd kon worden, voordat de server crashte zou dat een goed idee
kunnen zijn ;-)

Jaap-Andre