fopen schlägt fehl

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fopen schlägt fehl

    Ich bin nun vollends verzweifelt und da hilft oft wenn ich mein Problem mal niederschreibe.

    Script A:
    Code:
    $o_spool_csv = new spool("0000005001","Versandliste","csv");
    	$filename_csv = $_SERVER["DOCUMENT_ROOT"].$o_spool_csv->getpath();
    
    	$o_csv = new csv_slist($filename_csv);
    Script B:
    Code:
    class csv_slist {
    	
    	// Ressource
    	private $res = 0;
    	
    	// Datei anlegen
    	public function __construct($filename) {
    
    		// Datei öffnen
    		$this->res = fopen($filename,"wb");
    	}
    Funktioniert bestens. Er legt die Datei an und gibt auch was aus.

    Script C:
    Code:
    $o_spool_txt = new spool("0000005001","Versandliste","txt");
    $filename_txt = $_SERVER["DOCUMENT_ROOT"].$o_spool_txt->getpath();
    
    $o_eva = new txt_eva($filename_txt);
    Script D:
    Code:
    class txt_eva {
    	
    	// Ressource
    	private $res = 0;
    	
    	// Datei anlegen
    	public function __construct($filename) {
    
    		// Datei öffnen
    		$this->res = fopen($filename,"wb");
    	}
    Schlägt beim fopen fehl. Beides geht in das selbe Verzeichnis (jetzt eben zum 10. geprüft) das auch existiert.

    Noch jemand ne Idee wie ich dem irgendwie auf die Schliche kommen kann?

  • #2
    Error_reporting hoch drehen.
    Und Meldungen AUFMERKSAM lesen.

    Script C
    $filename_txt ist nicht das gleiche wie $filename
    Wir werden alle sterben

    Kommentar


    • #3
      Die Meldung ist klar:
      [Mon Jul 08 14:48:39 2013] [error] [client 192.168.1.83] PHP Warning: fopen(/var/www/SIS-T2/spool/simmel/2013/07/08_14_48_39_0000005001.txt) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directo
      ry in /var/www/SIS-T2/inc/txt.eva.inc on line 44

      Nur warum die kommt verstehe ich nicht da beide scripts definitv in das selbe Verzeichnis schreiben.

      Und das $filename_txt != $filename ist klar, ich benutze $filename ja auch nur in der Klasse die ich aufrufe.

      Kommentar


      • #4
        No such file or directory
        Glaube dem PHP!
        Sonst kommst du nicht weiter!
        PHP lügt nicht.
        Wir werden alle sterben

        Kommentar


        • #5
          Das PHP nicht "lügt" ist mir klar, daher bin ich ja so verzweifelt.

          Ich rufe Script A auf und die Datei wird im Verzeichnis abgelegt.

          Ich rufe Script C auf und der Fehler kommt. Ich Gehe in die Log Datei und hole mit mit copy und paste den Pfadnamen da raus und kommt in das Verzeichnis wo Script A die Datei angelegt hat.

          Kommentar


          • #6
            Vielleicht ein Timing-Problem: Du rufst das PHP-Script auf, bevor die Datei fertig angelegt wurde.

            Kommentar


            • #7
              Zitat von h3ll Beitrag anzeigen
              Vielleicht ein Timing-Problem: Du rufst das PHP-Script auf, bevor die Datei fertig angelegt wurde.
              So ähnlich:

              Ne Nacht drüber geschlafen und nachmal in Ruhe angeschaut.

              Timing bzw. die Reihenfolge war das Problem. Das Verzeichnis war zu dem Zeitpunkt wo das fopen passierte noch nicht da, später aber schon. Das hat dann für die Verwirrung gesorgt.

              Kommentar


              • #8
                In solchen Fällen bietet es sich Debugger wie z.b. XDebug zu benutzen wo man genau sieht wo das Script aussteigt und Probleme verursacht.

                Desweiteren, wenn ich eine Datei / Verzeichnis öffnen will nach dem ich es dynamisch angelegt habe sollte ich auch Prüfen ob Verzeichnis oder Datei existieren. Da bietet sich dann etwas wie try / catch an und dort Fehler fangen und entsprechend reagieren und / oder loggen.

                Einfach so den Code runter hacken und sich dann wundern das Fehler auftreten und man noch nicht mal eventuelle Fehler behandelt geht nunmal meistens gegen den Baum.

                Das gute ist, aus solchen Geschichten lernt man wenigstens.

                Gruß Litter
                Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                http://www.lit-web.de

                Kommentar

                Lädt...
                X