ochsi: Prüfen ob Datei geöffnet

Guten Tag

ich arbeite mit php und FPDF und möchte gern ein PDF erzeugen bzw. überschreiben. Ist die PDF-Datei aber bereits vorhanden und geöffnet erhalte ich natürlich die Fehlermeldung " failed to open stream: Permission denied in " wie kann ich prüfen ob die Datei offen ist?

Dann könnte ich den Nutzer meiner Applikation darauf hinweisen die Datei zu schließen und ernuert zu aktualisieren.

Der Aufruf der PDF Datei:     $pdf->Output("Z:/Pagels/".$Objektdaten[7]." ".$Objektdaten[5]." Einheit ".$Objektdaten[3]."/Interessentenliste.pdf","F");

Hat jemand eine Idee?

MfG ochsi

  1. Hi ochsi!

    Hat jemand eine Idee?

    file_exists überprüft, ob die Datei existiert.
    fopen gibt false zurück, wenn die datei nicht geöffnet werden konnte.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hi ochsi!

      Hat jemand eine Idee?
      file_exists überprüft, ob die Datei existiert.
      fopen gibt false zurück, wenn die datei nicht geöffnet werden konnte.

      MfG H☼psel

      Leider bekomme ich nur die Fehlermeldung faild to open... wenn ich fopen nutze
      und diese kann ich nicht ordentlich abfangen. Mach ich was Falsch das ich kein False erhalte?

      1. Hi ochsi!

        und diese kann ich nicht ordentlich abfangen.

        Doch. Mit einem @ vor dem Funktionsaufruf unterdrückst du jegliche Fehlerausgabe. Damit sollte man aber sparsam umgehen. In deinem Fall ist es aber nötig.

        Mach ich was Falsch das ich kein False erhalte?

        Ich würde es so lösen:

        <?php  
        if (file_exists('test.pdf')) // Datei existiert -> Test, ob geöffnet  
          if (!@fopen('test.pdf','r+')) echo 'Datei noch geöffnet!'; // Fehlermeldung ausgeben  
        /* Schlägt fopen nicht fehl, muss die Datei natürlich wieder geschlossen werden */  
        ?>
        

        Das funktioniert zumindest mit PDF-Dateien. Wichtig ist, dass das Programm welches die PDF-Dateien öffnet, diese mit einem Schreibschutz belegt. Ansonsten öffnet fopen die Datei ganz normal ohne Fehlermeldung.

        Eventuell gibt es aber auch fpdf-interne Funktionen, die dir diese Überprüfung abnehmen.

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Vielen Dank für deine schnelle hilfe das mit dem @ hatte ich auch schon ausprobiert werd mich nochma ran setzten.

          MfG ochsi

          1. Thx Hopsel

            Funktioniert jetzt!

            MfG

            ochsi