Hallo PHP-Profis,
ich möchte ein CGI-Skript per FTP auf einen anderen Server uploaden und danach einen POST-Request auf das CGI-Skript absetzen. Dafür habe ich eine kleine Funktion uploadFile geschrieben, die soweit auch sehr gut Funktioniert. Bis auf ein sehr seltsames Problem: Anscheinend wird die Datei nämlich immer Binär hochgeladen, obwohl ich FTP_ASCII angebe. Normalerweise ist das kein Problem, aber ein CGI-Skript läuft natürlich nur nach einem Upload im ASCII-Modus. Hier erstmal die Funktion:
	
und hier der Aufruf dazu:
	
Also die Datei wird hochgeladen, die Funktion gibt TRUE zurück....Aber leider meldet der Webserver beim Aufruf des CGI-Skripts einen Internal Server Error 500....beim prüfen der Dateigröße stelle ich fest, dass sie genauso groß ist wie auf meinem Windows-System, was ein Zeichen dafür ist, dass sie Binär hochgeladen wurde....Der PHP-Skript-Ausführende Server ist übrigens auch eine Windows-Maschine....der Empfangs-Server des CGI-Skripts läuft unter Linux....
Falls jemand eine Idee hat, bitte ich Sie hier rein zu posten und Danke Euch jetzt schonmal für alle Vorschläge!
-SLind
					ich möchte ein CGI-Skript per FTP auf einen anderen Server uploaden und danach einen POST-Request auf das CGI-Skript absetzen. Dafür habe ich eine kleine Funktion uploadFile geschrieben, die soweit auch sehr gut Funktioniert. Bis auf ein sehr seltsames Problem: Anscheinend wird die Datei nämlich immer Binär hochgeladen, obwohl ich FTP_ASCII angebe. Normalerweise ist das kein Problem, aber ein CGI-Skript läuft natürlich nur nach einem Upload im ASCII-Modus. Hier erstmal die Funktion:
PHP-Code:
	
	
function uploadFile($ftpserver, $ftpun, $ftppw, $ftpdir, $file, $chmod, $mode) {
    // versuche den dateinamen zu bestimmen
    $filename    =    explode("/", $file);
    $filename    =    $filename[count($filename)-1];
    if (!$ftpserver || !$ftpun || !$ftppw || !$ftpdir || !$chmod || !file_exists($file)) return false;
    if (
            !$handle = ftp_connect($ftpserver)
        OR    !ftp_login($handle, $ftpun, $ftppw)
        OR    !ftp_chdir($handle, $ftpdir)
        OR    !ftp_put($handle, $filename, $file, $mode)
        OR    !ftp_site($handle, "CHMOD ".$chmod." ".$filename)
        OR    !ftp_quit ($handle)
    ) {
        return false;
    } else {
        
        return true;
    
    }
} 
PHP-Code:
	
	
uploadFile("xxx.de", "web110", "xxxxxxxx", "/httpdocs", "./install.cgi", "755", FTP_ASCII); 
Falls jemand eine Idee hat, bitte ich Sie hier rein zu posten und Danke Euch jetzt schonmal für alle Vorschläge!
-SLind
          
Kommentar