Knut: Fehler eingegrenzt

Beitrag lesen

Hallo,

$input_url = 'http://example.com/programm.php?file=100/index.php';
  if ( $handle = fopen( $input_url, 'rb' ))
  ...
  else echo "klappt nicht";

fopen klappt bei allen Aufrufen, wenn der Parameter file= *.gif und *.htm Dateien bezeichnet. Bei *.php Dateien klappt's manchmal nicht. Und dann sind es hartnäckig dieselben Dateien.

Hier die Funktion in programm.php, die das Kopieren vom Hauptserver erledigen soll. Sorry, wenn es etwas "zerfleddert" aussieht:

//============================================================================  
   function URL_kopieren ( $host_url, $input_file, $temp_file, $output_file, $kw )  
//============================================================================  
{  
  @set_time_limit( 300 ); // 5 min.  
  $input_url = $host_url."send_file.php?infile=".$input_file."&kw=".$kw;  
//echo "<pre>input_url=[".$input_url."]</pre>\n";  
  if ( $handle = fopen( $input_url, 'rb' ) )  
  {  
    // VORLAUFENDES FILEDATUM LESEN  
    //------------------------------  
    $filemtime = '';  
    for ( $i=0; $i<15; $i++ )  
    {  
      $ziffer = fread( $handle, 1 );  
      if ( is_numeric( $ziffer )) $filemtime .= $ziffer; else break;  
    }  
    $contents = '';  
    while ( $block = fread( $handle, 1024 ))  
    {  
      $contents .= $block;  
    }  
//echo "<pre>".$filemtime.$contents."</pre>";  
    $contents = decodiereString( $contents ); // codiert mit base64_encode()  
echo "<pre>contents=[".$contents."]</pre>";  
  
    //-----------------  
    // DATEI SPEICHERN  
    //-----------------  
    if ( !strpos( 'x'.$contents, 'FALSE' ))  
    {  
      $out = fopen( $temp_file, "w" ); // w = write (zum Schreiben oeffnen  
      if ( $out )  
      {  
//echo "temp_file=[".$temp_file."] geoeffnet<br>";  
        fwrite( $out, $contents );  
        fclose( $out );  
  
        if ( file_exists( $output_file ))  
        {  
          unlink( $output_file );  
        }  
        rename( $temp_file,   $output_file );  
        touch ( $output_file, $filemtime, $filemtime );  
  
        return array( $filemtime, $contents );  
      }  
      else  
      {  
echo " Kann Datei [".$temp_file."] nicht zum Schreiben oeffnen:<br>";  
      }  
    }  
    else  
    {  
echo "<pre>URL=[".$input_url."] kann nicht geoeffnet werden<br>[".$contents."]</pre>\n";  
    }  
  }  
  return FALSE;  
}  
//========== URL_kopieren  

Das letzte echo "meldet". Und obwohl fopen nicht geklappt hat (wir sind beim else), wird die gewünschte Datei übermittelt, allerdings fehlen am Anfang etwa 20 Zeilen.

Manchmal sieht man ja den Wald vor lauter Bäumen nicht, möglicherweise stimmt was nicht mit meiner Funktion.

Gruß, Kurt