Zitat von Arne Drews
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Problem mit Copy Funktion
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zuletzt geändert von daniel1405; 02.09.2014, 12:23.Zitat von Arne Drews Beitrag anzeigenNicht getestet, aber der relevante Teil, um die vorletzte Datei der Log-Dateien lokal zu speichern, müsste in etwa so aussehen:
PHP-Code:$aRemoteFiles = ftp_nlist( $conn_id, $ftp_dir );
$aLogFiles = preg_grep( '/^access\.log.+/i', $aRemoteFiles );
sort( $aLogFiles );
$sMyLogFile = array_slice( $aLogFiles, -2, 1 );
$sMyLogFile_Name = basename( $sMyLogFile[0] );
$bTakenFromRemote = ftp_get(
$conn_id,
'pfad/zur/lokalen/quelle/' . $sMyLogFile_Name,
$sMyLogFile[0],
FTP_BINARY
);
if ( $bTakenFromRemote ) {
echo 'Datei erfolgreich kopiert!';
} else {
echo 'Datei konnte nicht kopiert werden, ich bin verwirrt...';
}
was mir wohl aufgefallen ist. hier ist das Array leer.
PHP-Code:$aRemoteFiles = ftp_nlist( $conn_id, $ftp_dir );
$aLogFiles = preg_grep( '/^access\.log.+/i', $aRemoteFiles );
sort( $aLogFiles );
PHP-Code:$files = ftp_nlist ($conn_id, $ftp_dir);
foreach ($files as $list){
$bn[]=basename($list);
//print_r($files);
}
// Sortieren des Arrays
#print_r($bn);
sort($bn);
// Suchen nach access.log im Namen
$log_dateien = (preg_grep('/^access.log.*/',$bn));
// Speichern des vorletzten Datensatzes des Arrays in neue Variable
$datei = array_slice($log_dateien,-2,1);
$sMyLogFile_Name = basename($datei[0] );
// BIS HIER IST ALLES SUPER. GENAU DIESE DATEI BRAUCHE ICH FÜR DIE WEITERE BEARBEITUNG!
echo ($sMyLogFile_Name);
PHP-Code:$bTakenFromRemote = ftp_get(
$conn_id,
'QUELLDATEI',
'log_neu/ZIELDATEI',
FTP_BINARY
);
if ( $bTakenFromRemote ) {
echo 'Datei erfolgreich kopiert!';
} else {
echo 'Datei konnte nicht kopiert werden, ich bin verwirrt...';
}
Ich vermute es liegt immer an die Art und Weise wie ich den Link setze. Also für QUELLDATEI setze ich 'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@*****.com/logs/QUELLDATEI' ein und für den Zielpfad setze ich 'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@*****.com/akt_logs/ZIELDATEI' ein. Kann ich das überhaupt so machen?
Kommentar
-
Schau Dir die Parameterreihenfolge von ftp_get an, Du verwendest Quelle und Ziel verkehrt herum!Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Zitat von Arne Drews Beitrag anzeigenSchau Dir die Parameterreihenfolge von ftp_get an, Du verwendest Quelle und Ziel verkehrt herum!
-> funktioniert dennoch noch nicht. er springt wieder in den verwirrt zweig.
Kommentar
-
Am besten wird es sein, wenn Du nochmal das ganze Script postest, wie Du es grad hast.Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Morgen zusammen,
also hier noch einmal mein Skript. Bin da langsam echt dran am verzweifeln.
PHP-Code:<?php
//FTP-Verbindung zum Server aufbauen
// Login-Daten müssen angepasst werden
$ftp_server = "****";
$ftp_user_name = "****";
$ftp_user_pass = "****";
$ftp_dir = "logs";
$ftp_new_dir = "/akt_log";
// Herstellen der Basis-Verbindung
$conn_id = ftp_connect($ftp_server);
// Einloggen mit Benutzername und Kennwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Besteht eine FTP-Verbindung
if ((!$conn_id) || (!$login_result)) {
echo "2.) FTP-Verbindung nicht hergestellt!";
echo "3.) Verbindung mit $ftp_server als Benutzer $ftp_user_name nicht möglich";
die;
} else {
echo "2.) FTP-Verbindung erfolgreich<br/>";
echo "3.) Verbunden mit $ftp_server als Benutzer $ftp_user_name<br/><br/>";
}
// Schalte passiven Modus ein - Habe ich mal eingeschaltet. Aber geht immer noch nicht.
ftp_pasv($conn_id, true);
// Suchen der exakten Log-Datei für die weitere Bearbeitung
// Einlesen des Verzeichnisinhalts in ein Array
$files = ftp_nlist ($conn_id, $ftp_dir);
foreach ($files as $list){
$bn[]=basename($list);
//print_r($files);
}
// Sortieren des Arrays
#print_r($bn);
sort($bn);
// Suchen nach access.log im Namen
$log_dateien = (preg_grep('/^access.log.*/',$bn));
// Speichern des vorletzten Datensatzes des Arrays in neue Variable
$datei = array_slice($log_dateien,-2,1);
$sMyLogFile_Name = basename($datei[0] );
// Hier steht der richtige Name der Datei drin. Also bis hier ist alles tutti!
echo ($sMyLogFile_Name);
// Auch wenn ich hier nichts falsches erkennen kann. Aber hier muss irgendwo der Hund begraben liegen.
$bTakenFromRemote = ftp_get(
$conn_id,
'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@****/akt_logs/' . $sMyLogFile_Name,
'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@****/logs/' . $sMyLogFile_Name,
FTP_BINARY
);
if ( $bTakenFromRemote ) {
echo 'Datei erfolgreich kopiert!';
} else {
// Hier springt er immer hin.
echo 'Datei konnte nicht kopiert werden, ich bin verwirrt...';
}
Gruß
Daniel
Kommentar
-
Bins nur kurz überflogen, aber ftp: für die lokale Datei ist natürlich Humbug!
So kann das nicht funktionieren. Nach Eliminierung der ganzen Flüchtigkeitsfehler würde das sicher auch in der kürzeren Variante von mir funktionieren, vermute ich mal...Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Zitat von Arne Drews Beitrag anzeigenBins nur kurz überflogen, aber ftp: für die lokale Datei ist natürlich Humbug!
So kann das nicht funktionieren. Nach Eliminierung der ganzen Flüchtigkeitsfehler würde das sicher auch in der kürzeren Variante von mir funktionieren, vermute ich mal...
also verstehe ich das dann so, dass ich mir die Datei, die in $sMyLogFile_Name steht erst runterladen muss?
Kann ich das nicht noch irgendwie abkürzen??? Ich habe ja Pfad und Dateinamen bereits.
Kommentar
-
In $sMyLogFile_Name steht nur der Name, damit Du den lokalen Pfad davor setzen kannst. Das zusammen ist der zweite Parameter von ftp_get. Wenn zuvor alles richtig ist, macht ftp_get richtig angewendet genau das, was Du möchtest...Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
Kommentar