PHP filter probleem met FILTER_CALLBACK
Vrienden,
Ik loop tegen een probleem aan waarbij Apache vastloopt bij een bepaald script waarin ik gebruik maak de FILTER_CALLBACK filter in PHP. Nu vraag ik mij af of dit enkel bij mij lokaal het geval is, of dat jullie diezelfde fout kunnen reproduceren. Let wel: Apache loopt bij mij vast, dus probeer het eerst op een lokale testserver.
De code die ik gebruik is de volgende:
Nu levert dit in eerste instantie bij mij geen probleem op. En de output is dan ook netjes:
Echter zodra ik een waarde voor $var invul waarbij check() false zou retourneren (vb. $var = 'test') dan loopt apache vast en moet ik de server opnieuw opstarten.
Dit probleem lijkt zich dus alleen voor te doen als de callback functie false retourneert. Het vreemde is dat als ik de callback functie als methode van een klasse aanroep, er geen probleem is:
De output is nu zoals je zou verwachten inderdaad false.
Niet onbelangrijk om te vermelden wat ik hier lokaal draai en welke versies ik geprobeerd heb:
WAMP2.0 (Standaard installatie)
Apache v2.2.6 en v2.2.2
PHP v5.2.5 en v5.2.1
Ik ben benieuwd of dit een bug in PHP is of dat het aan mijn lokale installatie ligt.
Ik loop tegen een probleem aan waarbij Apache vastloopt bij een bepaald script waarin ik gebruik maak de FILTER_CALLBACK filter in PHP. Nu vraag ik mij af of dit enkel bij mij lokaal het geval is, of dat jullie diezelfde fout kunnen reproduceren. Let wel: Apache loopt bij mij vast, dus probeer het eerst op een lokale testserver.
De code die ik gebruik is de volgende:
Code (php)
Nu levert dit in eerste instantie bij mij geen probleem op. En de output is dan ook netjes:
Echter zodra ik een waarde voor $var invul waarbij check() false zou retourneren (vb. $var = 'test') dan loopt apache vast en moet ik de server opnieuw opstarten.
Code (php)
Dit probleem lijkt zich dus alleen voor te doen als de callback functie false retourneert. Het vreemde is dat als ik de callback functie als methode van een klasse aanroep, er geen probleem is:
Code (php)
De output is nu zoals je zou verwachten inderdaad false.
Niet onbelangrijk om te vermelden wat ik hier lokaal draai en welke versies ik geprobeerd heb:
WAMP2.0 (Standaard installatie)
Apache v2.2.6 en v2.2.2
PHP v5.2.5 en v5.2.1
Ik ben benieuwd of dit een bug in PHP is of dat het aan mijn lokale installatie ligt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Gesponsorde koppelingen:
Bumpje...
Nog maar een bump dan. Iemand die dit even kan proberen?
zal even de zielepoot die wel wat aandacht mag krijgen een bump geven
;p ;p ;p
;p ;p ;p
Ik ben zelf ook nog even op onderzoek uitgegaan, en kan nu wel concluderen dat dit gewoon een bug in PHP is. Met elke configuratie die ik tot nu toe geporbeerd heb, liep apache vast...
Als iemand dit wel werkend krijgt, laat het me dan weten. Ik ben zeer benieuwd welke configuratie je dan gebruikt.
Als iemand dit wel werkend krijgt, laat het me dan weten. Ik ben zeer benieuwd welke configuratie je dan gebruikt.
Zelfde fout bij mij. Apache probeert geen data (null) naar het geheugenadres 00000000 te schrijven, maar dat mag niet omdat dat gereseveert is:
Why does Software Crash #1 – The Access Violation.
Met google kan ik er niks over vinden (op dat geheugenadres):
apache 0x009d8d20.
Why does Software Crash #1 – The Access Violation.
Met google kan ik er niks over vinden (op dat geheugenadres):
apache 0x009d8d20.
Yep, hier op OSX loopt de boel ook volledig in het honderd.
Krijg bij mijn host gewoon wit scherm...
Heb je iets van een foutmelding in een error log? Een segmentation fault ofzo?
Arend schreef op 02.01.2008 18:09:
Was die vraag voor mij bedoeld?Heb je iets van een foutmelding in een error log? Een segmentation fault ofzo?
ik welke error log zou ik moeten kijken? Apache schrijft in ieder geval niets naar zijn eigen log, hij kapt er gewoon mee...
Onder debian stable heb ik geen problemen.
Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch7 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_perl/2.0.2 Perl/v5.8.8
Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch7 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_perl/2.0.2 Perl/v5.8.8
Arend schreef op 02.01.2008 18:19:
Onder debian stable heb ik geen problemen.
Maar debian heeft toch ook niet in de eerste zoveel mb van het geheugen gereseveert? Dat heeft windows namelijk wel, en die vind het niet zo fijn als je daar mee gaat kloten.
[Wed Jan 2 18:48:24 2008] [error] PHP Fatal error: Call to undefined function filter_var() in /htdocs/test/test.php on line 15
PHP 5? Filters zijn dan pas namelijk beschikbaar ;-)
PHP Version 5.0.4
Quote:
;-)filter_var (PHP 5 >= 5.2.0)
Ik draai hem even vanuit Textmate (dus eigenlijk gewoon vanaf de commandline) en inderdaad, PHP stopt er gewoon mee.
Een workaround is om in plaats van 'false' bijvoorbeeld NULL, of 0 te hanteren. Dezen werken wel als ik ze probeer, en bij een if-statement zijn ze gelijk aan false. Daarnaast, NULL zal je waarschijnlijk niet snel tegenkomen op de plekken waar je filter_* gebruikt. Die zou je dus wel kunnen gebruiken. Vervelend blijft het natuurlijk wel.
Een workaround is om in plaats van 'false' bijvoorbeeld NULL, of 0 te hanteren. Dezen werken wel als ik ze probeer, en bij een if-statement zijn ze gelijk aan false. Daarnaast, NULL zal je waarschijnlijk niet snel tegenkomen op de plekken waar je filter_* gebruikt. Die zou je dus wel kunnen gebruiken. Vervelend blijft het natuurlijk wel.
Wanneer ik hem naar een windows hosting gooi krijg ik:
PHP has encountered an Access Violation at 0259A550
PHP has encountered an Access Violation at 0259A550
Dan ligt het blijkbaar aan de omgeving waarin je het probeert uit te voeren. Vooralsnog leveren Windows en Mac OSX dus problemen op...
Op Ubuntu 7/PHP 5.2.5/Apache2.2.4
Krijg ik een wit scherm.
Apache loopt niet vast.
Ik krijg wel dit in de Apache error log:
Heeft dus zijn kindje vermoord ;(
Krijg ik een wit scherm.
Apache loopt niet vast.
Ik krijg wel dit in de Apache error log:
Code (php)
1
[Thu Jan 03 21:52:29 2008] [notice] child pid 18454 exit signal Segmentation fault (11)
Heeft dus zijn kindje vermoord ;(
Gewijzigd op 01/01/1970 01:00:00 door Martijn B



