online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon timoxy vom 22.03.2022, 19:10 Options

php daten sicherung

hallo liebe supporter,

ich habe ein Problem mit einem Script von mir.

der Gedanken hinter diesem script ist, alle daten eines servers mittels php ftp auf einen anderen zu kopieren und somit per cronjob ein backup zu machen. das script läuft einwandfrei.

jedoch werden meine bilder (jpg/png/gif) nicht richtig übertragen, sie habend die richtige kb größe jedoch ist jedes bild transparent. (also ohne inhalt)

hier mein code:

//Sicherungsordner anlegen
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_chdir($conn_id, $ftp_verz);
ftp_mkdir($conn_id, $sicherungsOrdner);
ftp_site($conn_id, "CHMOD 777 ".$sicherungsOrdner);
ftp_chdir($conn_id, $sicherungsOrdner);
ftp_close($conn_id);

function auslesen($ordner, $ftp_server, $ftp_user_name, $ftp_user_pass, $ftp_verz) {
	if(file_exists($ordner)) {
	$inhalt=opendir($ordner);
	while($file = readdir($inhalt)){
		if($file != '.' && $file != '..' && $file != 'Thumbs.db') {

		//Datei oder Ordner?
			if(count(explode(".", $file))>1) {
				//echo substr($ordner, 2).$file.'<br />';

				$conn_id = ftp_connect($ftp_server);
				$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
				ftp_chdir($conn_id, $ftp_verz.'/'.substr($ordner, 2)); //in Verzeichniss wechseln
				$fp = fopen(substr($ordner, 2).$file, 'r'); //Datei auslesen
				ftp_fput($conn_id, $file, $fp, FTP_ASCII); //Datei speichern
				ftp_close($conn_id);
				fclose($fp);
			}
			else {
				$conn_id = ftp_connect($ftp_server);
				$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
				ftp_chdir($conn_id, $ftp_verz.'/'.substr($ordner, 2)); //in Verzeichniss wechseln
				ftp_mkdir($conn_id, $file); //neuer Ordner anlegen
				ftp_site($conn_id, "CHMOD 777 ".$file); //Ordner Rechte geben
				ftp_close($conn_id);

				auslesen($ordner.'/'.$file.'/', $ftp_server, $ftp_user_name, $ftp_user_pass, $ftp_verz);
			}
		}
	}
	closedir($inhalt);
	}
}

auslesen($startVerz, $ftp_server, $ftp_user_name, $ftp_user_pass, $ftp_verz.'/'.$sicherungsOrdner);


ich danke für eure hilfe

lg timo


Antwort schreiben

Antwort 1 von supporter2010 vom 22.03.2022, 19:29 Options

Hallo Timo,

Zitat:
ftp_fput($conn_id, $file, $fp, FTP_ASCII); //Datei speichern



Bilder sollten im Binär-Modus übertragen werden und nicht im ascii-Modus...

Hoffe, das wars...

mfg, sup2010

Antwort 2 von timoxy vom 22.03.2022, 19:57 Options

ich danke dir supp2010 es funktioniert.

jetzt aber noch eine frage, wieso funktioniert mein scrippt nicht auf jedem server?

und zwar an einer anderen stelle habe ich folgenden code:

Zitat:
//Name der Homepage
$hp = "der name der page";

//Was soll gespeichert werden
$startVerz = "."; //realpath("./")."";

//Verzeichniss zum Zwischenspeichern
$verzSave = "save"; //ohne / am Ende mit Rechte 777

//Hier werden die Daten gespeichert
$ftp_server = "ftp.domain.de";
$ftp_user_name = "name";
$ftp_user_pass = "passowort";
$ftp_verz = "";

//Datenbanken Speichern?
$savedb = true; //DB sichern ja/nein?

//Name der zu speichernden Datenbank
$dbname = "datenbankname";

//Logindaten Datenbank
$dbhost = "localhost";
$dbuser = "username";
$dbpass = "pwasort";

/*-------------------------*/

$remote_file = $ftp_verz.'/savemain.php';
$local_file = $verzSave.'/savemain.php';
$handle = fopen($local_file, 'w');
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_fget($conn_id, $handle, $remote_file, FTP_ASCII, 0)) {
ftp_close($conn_id);
fclose($handle);
include_once $local_file;
unlink($local_file);
}


Warning: ftp_login() expects parameter 1 to be resource, boolean given in /var/www/vhosts/honig-von-timo.de/httpdocs/save.php on line 34

zeile 34 ist: $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

ich ahbe verschiedene provider ... bei den meisten tut dieses script aber bei einem provider nicht.

rechte des "save" ordners sind auf 777 gestellt

noch eine kurze info zum verständnis. dieser code befindet sich auf dem jeweiligen servern. er soll das script welches die datensicherung macht vom main server holen speichern, abarbeiten und dann löschen.

das script auf dem meinserver (code auszug davon im ersten post) speichert zusätzlich auch noch alle datenbanken. wenn eine änderung ansteht muss diese nur einmal vorgenommen werden ... deswegen dieser "umweg".

ich hoffe das ist soweit verständlich

Antwort 3 von fg3mj09 vom 22.03.2022, 20:10 Options

Zitat:
Warning: ftp_login() expects parameter 1 to be resource, boolean given in

heisst auf deutsch: ftp_login erwartet als ersten Parameter ein Handle, es wurde aber ein Boolean (logischer Wert) übergeben.

Zitat von php.net: ftp_connect
Zitat:
Gibt bei Erfolg einen SSL-FTP-Stream zurück oder FALSE, falls ein Fehler auftrat.

Also hat der Connect nicht geklappt und es wurde FALSE zurückgegeben.

Warum es nicht klappt. K.A. Aber manche Hoster sperren Client-Online-Funktionen für PHP.

Ähnliche Themen

Apache PHP, PHP wird nicht interpretiert
Kreavis  20.11.2008 - 106 Hits - 2 Antworten

(PHP) einen PHP-Parser mit PHP programmieren
skribbtkiddie  17.07.2009 - 356 Hits - 1 Antwort

[php] Zerstört base64 binäre Daten?
programmierwilly  18.07.2009 - 247 Hits - 4 Antworten

Suche meine php.ini, und wo ist dies: /usr/local/php5/lib/php.ini
TremorChrist  07.09.2009 - 343 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026