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