So erhalten Sie den FTP-Fehler bei Verwendung von PHP

Lesezeit: 2 Minuten

Ich habe ein Skript, das sich bei einem Remote-Server anmeldet und versucht, Dateien mit PHP umzubenennen.

Der Code sieht derzeit ungefähr so ​​​​aus wie in diesem Beispiel von der php.net-Website:

if (ftp_rename($conn_id, $old_file, $new_file)) {
 echo "successfully renamed $old_file to $new_file\n";
} else {
 echo "There was a problem while renaming $old_file to $new_file\n";
}

aber … was war der Fehler? Berechtigungen, kein solches Verzeichnis, Festplatte voll?

Wie kann ich PHP dazu bringen, den FTP-Fehler zurückzugeben? Etwas wie das:

echo "There was a problem while renaming $old_file to $new_file: 
the server says $error_message\n";

Benutzer-Avatar
Sascha Schmidt

Sie könnten error_get_last() verwenden, wenn der Rückgabewert falsch ist.

  • Das ist für mich immer null. Mein Problem ist ftp_putnicht ftp_rename, daher bin ich mir nicht sicher, ob es für das OP vollständig relevant ist. Die Lösung für mich war, anzurufen ftp_pasv Vor ftp_put. Ich bin auf Ubuntu 14.04 mit PHP 5.5.9.

    – Tyler Collier

    12. August 2014 um 19:52 Uhr

Benutzer-Avatar
Peter Hopfgartner

Ich mache so etwas wie:

$trackErrors = ini_get('track_errors');
ini_set('track_errors', 1);
if ([email protected]_put($my_ftp_conn_id, $tmpRemoteFileName, $localFileName, FTP_BINARY)) {
   // error message is now in $php_errormsg
   $msg = $php_errormsg;
   ini_set('track_errors', $trackErrors);
   throw new Exception($msg);
}
ini_set('track_errors', $trackErrors);

BEARBEITEN:

Beachten Sie, dass $php_errormsg ab PHP 7 veraltet ist.

Verwenden Sie stattdessen error_get_last().

Siehe Antwort von @Sascha Schmidt

Betrachten Sie die FTP-API hier:

http://us.php.net/manual/en/function.ftp-rename.php

Es scheint keinen Weg zu geben, etwas anderes als wahr oder falsch zu bekommen.

Sie könnten jedoch ftp_raw verwenden, um einen rohen RENAME-Befehl zu senden und dann die zurückgegebene Nachricht zu analysieren.

Basierend auf der Antwort von @Sascha Schmidt könnten Sie so etwas tun:

if (ftp_rename($conn_id, $old_file, $new_file)) {
 echo "successfully renamed $old_file to $new_file\n";
} else {
 echo "There was a problem while renaming $old_file to $new_file\n";
 print_r( error_get_last() ); // ADDED THIS LINE
}

print_r zeigt den Inhalt des Arrays error_get_last() an, damit Sie den Fehler lokalisieren können.

1094300cookie-checkSo erhalten Sie den FTP-Fehler bei Verwendung von PHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy