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";
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
Peter Hopfgartner
Ich mache so etwas wie:
$trackErrors = ini_get('track_errors');
ini_set('track_errors', 1);
if (!@ftp_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.
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.
10943000cookie-checkSo erhalten Sie den FTP-Fehler bei Verwendung von PHPyes