ftp_delete() klappt nicht

creativeheadz

Erfahrenes Mitglied
hey leute ich bins mal wieder, dieses mal aber mit einen einem anderen Problem.

mein code:

PHP:
<?php

include ('../config.php');

$delid = $_GET['delid'];

$abfrage = "SELECT pdf FROM events WHERE id='$delid'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   $datei = "$row->pdf";
   }
	 
if(@ftp_delete($ftpdata[$_SERVER['SERVER_NAME']],$datei, "pdf/")) 

	echo "Erfolgreich gelöscht.";

	else 
	 echo "Fehler beim Löschen.";
			
			$loeschen = "DELETE FROM events	WHERE id='$delid' ";
				$loesch = mysql_query($loeschen);
		{
				if ($loesch == true)
				 {
				echo "Das Event wurde erfolgreich gel&ouml;scht. <a href=\"delete_event.php\" target=\"mainFrame\" >zur&uuml;ck</a>";
				 }
				 
				 else 
				 {
				 echo "Leider konnte das Event nicht gel&ouml;scht werden.";
				 }
		}
?>

Der Datensatz wird aus der DB gelöscht, nur die datei leider nicht vom server.
da erscheint jedes mal die Meldung: "Fehler beim Löschen."

Weiss jemand warum?

Gruß
Daniel
 
Wo wird denn die Verbindung zu FTP-Server aufgebaut? In der config.php?
Ich wuerd im Moment eher auf garnicht tippen, denn Du scheinst ftp_delete() den Servernamen zu uebergeben. Du musst aber ein Verbindungshandle uebergeben.
Wenn Du mal das @ vor ftp_delete() entfernst solltest Du auch sehen wo genau das Problem liegt. Wie gesagt, ich tippe darauf, dass die Verbindung nicht aufgebaut wurde.
 
he he Danke okey,
Verbindung steht nun aber jetz erhalte ich folgende Fehlermeldung:

Warning: Missing argument 3 for ftpdelete() in /var/www/html/user/admin/include/class.FTP.php on line 45

class.FTP.php:

PHP:
<?php

class FTP{
	
	function FtpUpload($ftpdata,$source_file, $dir){
		$conn_id = ftp_connect($ftpdata['server']); 
		if ((!$conn_id)) { 
			die('Keine FTP Verbindung: '.$error_num);
		}
		$login_result = ftp_login($conn_id, $ftpdata['username'], $ftpdata['password']); 
		if ((!$conn_id) || (!$login_result)) { 
			$error_num = 8;
		}
		elseif(!isset($source_file['name']) || empty($source_file['name']))
			$error_num = 9;
		else{
			$search 	= array(" ","'","´","`","ä","Ä","ö","Ö","ü","Ü","ß","?","!","%","+");
      $replace 	= array("_","","","","ae","Ae","oe","Oe","ue","Ue","ss","","","","_"); 
			$dest_name = str_replace($search, $replace, $source_file['name']);
      if(substr($dir, strlen($dir)-1, 1) != "/") $dir .= "/";
			//die(ftp_pwd($conn_id));

			$upload = ftp_put($conn_id, $dir.$dest_name, $source_file['tmp_name'], FTP_BINARY); 

			if (!$upload)
		        $error_num = 10;
		   ftp_quit($conn_id);
		}
		if(isset($error_num) && !empty($error_num)){
			die('Fehler beim Kopieren der Datei: '.$error_num);
		}
		else{
			return $dest_name;
		}
	}

	function FtpDelete($ftpdata,$file,$self, $errorlink=null){
		$conn_id = ftp_connect($ftpdata[server]); 
		$login_result = ftp_login($conn_id, $ftpdata[username], $ftpdata[password]); 
		if ((!$conn_id) || (!$login_result)) { 
			$error_num = 8;
		}
		else{
			$delete = ftp_delete($conn_id, $file); 
			if (!$delete)
		        $error_num = 16;
		   ftp_quit($conn_id);
		}
		if(isset($error_num) && !empty($error_num)){
			echo $file.'<br>';
			if($errorlink == null){
			die('Fehler beim Löschen der Datei: '.$error_num);
				//header('Location: '.$self.'&error_num='.$error_num);
				exit;
			}
			else
				return false;
		}
		else{
			return true;
		}
	}
}
?>

line 45:

PHP:
function FtpDelete($ftpdata,$file,$self, $errorlink=null){
 
Die Methode ftpdelete() braucht noch einen 3. Parameter. Dieser wird nur irgendwie im Code garnicht genutzt, was irgendwie merkwuerdig ist.
Du kannst da also im Grunde einfach irgendwas uebergeben.
Ansonsten kannst Du Dir ja auch meine FTP-Klasse ansehen.
 
sry das hab ich jetz nicht ganz verstanden. der upload mit meiner klasse funktioniert ja nur das löschen irgendwie nicht.
 
Warning: Missing argument 3 for ftpdelete() in /var/www/html/user/admin/include/class.FTP.php on line 45

Die Fehlermeldung gibt schon ziemlich genaue angabe darüber, wo der Fehler liegt nicht?

PHP:
function FtpDelete($ftpdata,$file,$self, $errorlink=null){

Diese Funktion verlagt drei Übergabeparameter und einen vierten, welcher freiwilig ist. Es scheint so, als ob du irgendwo die Funktion FtpDelete aufrufst, aber nur zwei parameter überibst.... Stimmt das?

X
 
Zurück