include vraagje

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • include vraagje

      Beste mede scripters/webmasters,

      Ik ben voor onze scouting groep bezig met een nieuwe website te bouwen.
      Nu zou ik graag een andere foutmelding voor de php include functie willen weergeven als het bestand niet gevonden/geladen kan worden.

      Dus niet de standaard foutmelding zoals deze:

      Source Code

      1. Warning: include(): Failed opening 'file.php' for inclusion (include_path='C:\xampp\php\PEAR') in path/to-file on line X


      Maar bijvoorbeeld de tekst.

      Source Code

      1. Dit bestand kon niet geladen worden.


      Nou heb ik al wat gegooglet ect ect maar kom niet echt tot een goedwerkende oplossing.

      Ik hoop dat jullie mij verder kunnen helpen.

      Ik heb alles momenteel lokaal draaien via xampp. Later zal dit waarschijnlijk verhuizen naar een doorsnee webhosting.

      Als vast super bedankt!
      Met vriendelijke groet,

      Jeroen
    • De vraag is ook, waarom zou je dit willen? Als je iets probeert te includen wil je het toch ook gaan gebruiken? En blijkbaar kun je niet verder op het moment dat je dit bestand mist? Dus wat dat betreft zou een require, of wellicht beter, een require_once meer op zijn plaats zijn? Ik zou niet aansturen op een ontwerp waarin je allerlei meldingen over fouten faciliteert of fouten op deze manier probeert af te vangen. Laat dingen die fout gaan gewoon fout gaan.*

      En dan nog het volgende: voor een ontwikkelomgeving is het handig dat je gretig bent met foutmeldingen en andere mededelingen als zoals waarschuwingen (warnings) en uitzonderingen (exceptions), dit is handig voor het vroegtijdig detecteren en oplossen van (potentiële) bugs, maar een live omgeving zou hier eigenlijk nooit (op deze manier, publiekelijk) mededelingen over moeten doen. Dit omdat je hiermee potentieel zwakheden in je systeem blootgeeft.

      Je zou foutmeldingen etc. wel intern moeten loggen en af en toe je errorlog eens door moeten spitten om na te gaan of er (ernstige) dingen foutgaan, maar naar buiten toe zou je eigenlijk alleen een generieke "500 Internal Server Error" pagina moeten retourneren op het moment dat er iets fout gaat, zonder enige details over wat er onder de motorkap fout ging. En als je website dan zo op zijn bek gaat, dan zou je dit als "kritieke" error apart kunnen loggen.

      Een controle met file_exists() is in dit geval geen oplossing (zie EDIT #2 hieronder), en realiseer je ook dat dit een van de "duurdere" operaties is. Ik zou gewoon wegsturen van een ontwerp waarbij het onzeker is of bestanden wel bestaan... Creëer een zodanig stramien dat dit geen twistpunt is, en ga er vervolgens vanuit dat de benodigde bestanden gewoon aanwezig zijn.

      * Zoals in de voorlaatste paragraaf aangehaald: een soort van algemeen vangnet (generieke foutpagina) is mogelijk wel een goed idee.

      EDIT: misschien is het ook handig om een toelichting te geven hoe jij dit denkt in te zetten in jouw website. Onder bepaalde omstandigheden is het namelijk ook mogelijk om externe bestanden te includen. En dat is nogal gevaarlijk.

      EDIT 2: en blijkbaar inspecteert file_exists de include paden niet, dus dat gaat je ook niet echt helpen bij de bovenstaande foutmelding.

      The post was edited 5 times, last by FangorN ().

    • Zelf raad ik aan om niet voor elke include een controle te doen met file_exists, en enkel als het echt nodig is. Ik kan wel mij indenken dat je misschien een webapplicatie wilt leveren waarin eerst een setup-procedure wordt doorlopen voordat het gebruiksklaar is, en dat je dan je config.inc.php standaard eerst config.inc.sample.php noemt of iets in die trant.

      Als de setup niet is doorlopen, dan kan je prima met die functie een melding tonen.

      Maar goed, ik raad aan om dit liever niet te vaak te doen in je codebase. Want hoe vaak zou die error getriggerd worden? Hoogst waarschijnlijk niet vaak... :P