11 berichten aan het bekijken - 1 tot 11 (van in totaal 11)
  • Q:
    Bijdrager
    computer space

    Hoe zien welke regel PHP een typefout bevat?

    Als je PHP schrijft, sluipt er wel eens een gemist haakje of verkeerde puntkomma of verkeerd sluiten van aanhalingstekens in.
    Probleem is: als je de error-meldingen aan zet, laat ie nog steeds niks zien. Je krijgt gewoon een blanko pagina geserveerd met zo’n fout.

    Hoe kan ik toch uitvinden waar de typefout zit?

    Inactief
    Anoniem

    Goeie editor gebruiken met syntax highlighting? Of trap ik nu een open deur in?

    Bijdrager
    Jakko Westerbeke
    computer op 16 oktober 2013

    Hoe kan ik toch uitvinden waar de typefout zit?

    Je kunt natuurlijk de code helemaal doorlopen en kijken of die klopt, maar dat is zeker voor lange scripts een klotewerk en hoe dan ook is er grote kans dat je er eerst een heleboel keer gewoon overheen kijkt.

    Maar ik dacht dat PHP-foutmeldingen een regelnummer geven?

    Parse error: parse error, expecting <code>&#039;,&#039;&#039; or</code>';'' in foo.php on line 849

    en zo?

    Kom je er daarmee nog niet uit, dan is één manier om te kijken waar je denkt dat het kan zitten en dan iets te laten printen — wat maakt niet zo uit, maar denk je dat de fout in een variabele zit dan is het een goed idee de waarde daarvan te doen. Komt wat je wilt printen ook in beeld, dat zit de fout in een latere regel.

    Bijdrager
    nop

    Gewoon in de laatste regels van de error_log van apache kijken op je webserver!

    Bijdrager
    arjendj

    Goede editor zoals Aptana gebruiken (Een goede editor geeft 90% van de fouten aan) en het php log bij de hand houden om de laatste fouten te vinden.

    Bijdrager
    Matthijn

    Als de errors niet worden weergegeven heb je waarschijnlijk de error weergave niet goed aangezet of niet voor elke error. Het is bijvoorbeeld mogelijk dat je in de code iets hebt staan als (helemaal aan het begin van je code)

    error_reporting(E_ALL);
    ini_set(‘display_errors’, ‘on’);

    Maar alsnog niets ziet. Het is namelijk mogelijk dat er in php.ini een instelling aan staat dat de errors niet getoond moeten worden en het aanzetten van de weergave in code geblokkeerd is.

    Bijdrager
    computer space

    @ matthijn: die regels heb ik staan, en werken, want andere waarschuwingen krijg ik gewoon.
    Ik was een $ voor een variabele vergeten. Dat soort dingen levert gewoon een blanco pagina, zonder errors.

    Nu gebruik ik vaak de halveer-methode. Steeds minder wegcommenten tot ie het niet meer doet.

    Waar zit de PHP log?

    Bijdrager
    Buzz

    Je kan in de log van je web server kijken, dus voor Apache bijvoorbeeld onder /var/log/apache2/error_log. Maar daar komen als het goed is dezelfde meldingen in. Er zijn natuurlijk ook typefouten die niet tot een syntax error leiden maar wel de output van je script verpesten. Die zijn lastiger te vinden. Misschien had je daar last van?

    Bijdrager
    Matthijn

    @ matthijn: die regels heb ik staan, en werken, want andere waarschuwingen krijg ik gewoon.
    Ik was een $ voor een variabele vergeten. Dat soort dingen levert gewoon een blanco pagina, zonder errors.

    Enkel als de instellingen zo staan, met een pagina met de code

    <?php

    ochIkbenDeDollarVergeten = 30;

    ?>

    En de juiste error instellingen krijg je daar gewoon een error, iets als “undefined ochIkBenDeDollarVergeten” oid.

    Bijdrager
    Blok_D

    Waarschijnlijk staat in php.ini display_errors uit. Omdat het PHP bestand niet geparsed kan worden worden dus ook de eerste regels met ini_set en error_reporting niet uitgevoerd. Je kunt het oplossen met een .htaccess in de root:

     
    php_flag display_errors On
     
    Bijdrager
    computer space

    Dat is m Blok, bedankt!

11 berichten aan het bekijken - 1 tot 11 (van in totaal 11)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.