• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

7 is not a valid stream resource

Status
Für weitere Antworten geschlossen.

csigg

Neues Mitglied
Hallo,

ich hab ein PHP-Skriopt geschrieben, zum auslesen von Kommaseparierten Dateien. mit folgendem Quelltext:
PHP:
<?php
    $verzeichnis = "export/";
    $mail_template = "mail_template.txt";
    $log_datei = "log_dhl.txt";
    $betreff = "Paketversand";
    $ok = 0;
    $fehler = 0;
    
    //Klasse einbinden
    require('phpmailer/class.phpmailer.php');
    
    $log_fp = fopen($log_datei, "a+"); // Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
    
    $handle = opendir($verzeichnis);
    while($file = readdir($handle))
    {
        if(substr($file, -4) == ".txt") {
            $pfad = $verzeichnis."/".$file;
            $Dateizeiger = fopen($pfad, "r");
                while(($Daten = fgetcsv($Dateizeiger, 1000, ";")) !== FALSE)
                {
                    $zeile = "";
                    $paketid = $Daten[1];
                    $name1 = $Daten[17];
                    $name2 = $Daten[18];
                    $emailadresse = $Daten[19];
                    $plz = $Daten[31];
                    $ort = $Daten[33];
                    $strasse = $Daten[34];
                    $hausnummer = $Daten[42];
                    
                    
                    if(!strcmp($Daten[25],"N"))
                    {
                        $nachname_flag = true;
                    }
                    else
                    {
                        $nachname_flag = false;
                    }
                    $nachname_preis = $Daten[27];
                    
                    
                    $datei = fopen($mail_template , "r");
                    $text = fread($datei , 1000);
                    fclose($datei);
                    
                    $text = str_replace("%IDENTCODE%",$paketid,  $text);
                    
                    $name = $name1." ".$name2;
                    $name = trim($name);
                    $text = str_replace("%NAME%", $name,  $text);
                    $text = str_replace("%STRASSE%", $strasse, $text);
                    $text = str_replace("%HAUS_NR%", $hausnummer, $text);
                    $text = str_replace("%PLZ%", $plz, $text);
                    $text = str_replace("%ORT%", $ort, $text);
                    $text = str_replace("%IDC%", $paketid, $text);
                    
                    if($nachname_flag)
                    {
                        $nachname_string = "Fälliger Nachnamebetrag: ".$nachname_preis." Euro";
                        $text = str_replace("%NACHNAME%", $nachname_string,  $text);
                     } 
                     else
                     {
                        $text = str_replace("%NACHNAME%", " ",  $text);
                     }    
                      //Instanz von PHPMailer bilden
                      $mail = new PHPMailer();
                     
                      //Absenderadresse der Email setzen
                      $mail->From = "[email protected]";
                    $mail->IsSMTP(); //Versand über SMTP festlegen
                    $mail->Host = "smtp.1und1.de"; //SMTP-Server setzen
                    $mail->SMTPAuth = true;     //Authentifizierung aktivieren
                    $mail->Username = "[email protected]";  // SMTP Benutzername
                    $mail->Password = "6iAy5ok7"; // SMTP Passwort 
                    
                    
                      //Name des Abenders setzen
                      $mail->FromName = "Natterer Modellbau";
                      
                      //Empfängeradresse setzen
                      $mail->AddAddress($emailadresse);
                      
                      //Betreff der Email setzen
                      $mail->Subject = "Versandlink DHL";
                     
                      //Text der EMail setzen
                      $mail->Body = $text;
      
                    
    
                    if(!$mail->Send())
                      {
                        echo '<tr bgcolor="#FF0000">';
                            echo '<td>'.$paketid.'</td>';
                            echo '<td>'.$name1.' '.$name2.'</td>';
                            echo '<td>'.$emailadresse.'</td>';
                            echo '<td>'.$mail->ErrorInfo.'</td>';
                        echo '</tr>';
                        $fehler++;
                        //Logzeile vorbereiten
                         $datum = date("d.m.Y");
                        $uhrzeit = date("H:i");
                        $zeile = "\n".$datum." - ".$uhrzeit." Uhr;".";".$paketid.";".$name1." ".$name2.";".$emailadresse.";".$mail->ErrorInfo.$paketid;
                        fwrite($log_fp , $zeile); // Dateiinhalt in die Datei schreiben
                        echo "<br />";
                        fclose($Dateizeiger);
                        $t1 = $verzeichnis."/".$file;
                        $t2 = $verzeichnis."fehler/".$file;
                        copy($t1,$t2);
                      }
                      else
                      {
                         echo '<tr bgcolor="#00FF00">';
                            echo '<td>'.$paketid.'</td>';
                            echo '<td>'.$name1.' '.$name2.'</td>';
                            echo '<td>'.$emailadresse.'</td>';
                            echo '<td>OK</td>';
                        echo '</tr>';
                        $ok ++;
                        echo "<br />";
                        fclose($Dateizeiger);
                        
                      }
                      unlink($verzeichnis."/".$file);
                }
                
                 
            
            
        }
        
    }
    fclose($log_fp); // Datei schließen    

closedir($handle);
 echo '</table>';
echo '<br />';
$gesamt = $ok + $fehler;
echo 'Es wurden '.$gesamt.' Emails versendet, davon:<br />';
echo $ok.' mit Status OK <br />';
echo $fehler.' mit Status Fehler <br / >';
?>
Wobei eigentlich nur die ersten paar interesssant sein dürften, der vollständigkeit halber hab ich alles angefügt.

Es wird auch alles ausgeführt, allerdings kommt immer noch die Warnung:
Code:
[B]Warning[/B]:  fgetcsv(): 7 is not a valid stream resource in [B]/opt/lampp/htdocs/dhl_versand.php[/B] on line [B]40[/B]
Die Zeile 40 ist folgende:
PHP:
while(($Daten = fgetcsv($Dateizeiger, 1000, ";")) !== FALSE)
                {
 
Wenn ich das richtig sehe ist bei $pfad = $verzeichnis."/".$file; ein Slash zu viel, da der schon bei $verzeichnis mitgegeben wird.
Ich weiß nicht ob das die Fehlermeldung erklärt, aber versuch es mal.

Gruß
Voodoo
 
Danke, der Slash war wirklich zuviel.

Aber die Fehermeldung hab ich trotzdem noch.
Ich hab mir die Pfade ausgeben lassen, aber es funktioniert leider immer nch nicht. Immer noch die selber Fehlermeldung.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben