Melina: "include_once" - Warning abfangen

Moin,

ist es möglich folgende Meldung

"Warning: include_once(inc.kopf.php): failed to open stream: No such file or directory in /html/index.php on line 6 Warning: include_once(): Failed opening 'inc.kopf.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /html/index.php on line 6"

abzufangen und dafür eine andere Meldung ausgeben zu lassen wie z.B. "Funktion kann derzeit nicht ausgeführt werden"?

  1. hi Melina,

    if(!file_exists($myFileToInclude)) {  
       doWhatEver();  
    };
    

    mfg

    tami

    1. Hi Tami,

      if(!file_exists($myFileToInclude)) {

      doWhatEver();
      };

        
      ich bin ehrlich, ich verstehe 0 aber ich werde es mal testen. Ich denke in $myFileToInclude wird die Datei und der Pfad zur Datei festgelegt?
      
      1. hi Melina,

        Hi Tami,

        if(!file_exists($myFileToInclude)) {

        doWhatEver();
        };

        
        >   
        > ich bin ehrlich, ich verstehe 0 aber ich werde es mal testen. Ich denke in $myFileToInclude wird die Datei und der Pfad zur Datei festgelegt?  
          
        sorry, ja, es ging nur ums prinzip. mit file\_exists() testest du, ob die datei existiert. erst dann solltest du sie includieren ...; statt die variable zu nehmen, kannst du auch direkt den file-string, also die datei, die du includieren willst, da reinschreiben.  
          
        <http://php.net/manual/de/function.file-exists.php>  
          
        mfg  
          
        tami
        
  2. abzufangen und dafür eine andere Meldung ausgeben zu lassen wie z.B. "Funktion kann derzeit nicht ausgeführt werden"?

    Abgesehen davon, dass die Lösung von Tami der richtige Weg ist hätte ich vorsichtshalber noch gerne die Frage abgeklärt, was Du eigentlich bezweckst. Wird die zu inkludierende Datei eventuell von einem Benutzer hochgeladen?

    Ich will nur nicht, dass Dein Webhost ggf. missbraucht wird.

    Jörg Reinholz

    1. Abgesehen davon, dass die Lösung von Tami der richtige Weg ist hätte ich vorsichtshalber noch gerne die Frage abgeklärt, was Du eigentlich bezweckst. Wird die zu inkludierende Datei eventuell von einem Benutzer hochgeladen?

      Nein, wenn ich an einer Datei arbeite, dann kann es sein dass ich diese Offline nehme, weil ich etwas testen möchte. In dieser Zeit sollte man natürlich nicht sehen dass diese Datei eingebunden wird, sieht a) nicht schön aus und b) kennt ein Angreifer direkt was Sache ist.

      1. Hallo,

        Wird die zu inkludierende Datei eventuell von einem Benutzer hochgeladen?
        Nein, wenn ich an einer Datei arbeite, dann kann es sein dass ich diese Offline nehme, weil ich etwas testen möchte. In dieser Zeit sollte man natürlich nicht sehen dass diese Datei eingebunden wird, sieht a) nicht schön aus und b) kennt ein Angreifer direkt was Sache ist.

        dann wäre es aber doch sinnvoller, diese eine Datei zunächst unverändert zu lassen und die Änderungen komplett an einer isolierten Offline-Kopie des Projekts zu testen.

        Ciao,
         Martin

        --
        Rizinus hat sich angeblich als sehr gutes Mittel gegen Husten bewährt.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Hakuna matata!

        Nein, wenn ich an einer Datei arbeite, dann kann es sein dass ich diese Offline nehme, weil ich etwas testen möchte.

        Verstehe, langfristig solltest du dir vielleicht Gedanken darüber machen, dein Produktivsystem von deinem Entwicklungssystem zu trennen und Änderungen koordiniert in das Produktivsystem einzuspielen. Das Stichwort dazu lautet Deployment.

        --
        “All right, then, I'll go to hell.” – Huck Finn
  3. Moin,

    Moin,

    auch ich würde Dir raten, einen anderen Weg zu finden. Wie machst Du das überhaupt, die Datei offline nehmen? Umbenennen?

    Ich möchte nur der Vollständigkeit halber die Fehlerunterdrückung mit @ nennen:

    @include "/mein/datei.php";  
    
    

    Das habe ich seitdem ich es das erste mal gesehen habe nie verwendet. Man sollte es aber vielleicht kennen. Oder auch nicht, steinigt mich...

    Cheers,
    Baba

    --
    Baba kommt von Basketball
    1. Hallo

      auch ich würde Dir raten, einen anderen Weg zu finden. Wie machst Du das überhaupt, die Datei offline nehmen? Umbenennen?

      Ich möchte nur der Vollständigkeit halber die Fehlerunterdrückung mit @ nennen:

      @include "/mein/datei.php";

      
      >   
      > Das habe ich seitdem ich es das erste mal gesehen habe nie verwendet. Man sollte es aber vielleicht kennen. Oder auch nicht, steinigt mich...  
        
      Grundsätzlich ist es nicht die feine englsiche Art. Es wird ja nicht der Fehler beseitigt, sondern nur die Nachricht, dass er da ist, unterdrückt. Manchmal geht es aber nicht anders. Im Falle von include/require (mit oder mit ohne „\_once“) kommt hinzu, dass die Wahrscheinlichkeit, dass es wegen der nicht stattgefunden habenden Verarbeitung in den eingebundenen Skripten zu Folgefehlern kommt, nicht gerade niedrig ist. Da ist es besser, mit file\_exists zu arbeiten und den relevanten Rest in diesem Zweig abzufeiern oder noch besser die Entwicklung vom Produktivsystem zu trennen.  
        
      Letzteres ginge mit einem eigenen, lokalen Webserver mit allem notwendigen Kram oder auf einer Subdomain auf die man nur selbst Zugriff hat. Man sollte den Code für die Subdomain allerdings schon so stabil gemacht haben, dass man den Webserver beim Testen nicht in's Nirwana reißen kann.  
        
      Tschö, Auge  
      
      -- 
      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.  
      Terry Pratchett, "Wachen! Wachen!"  
        
      ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}