23587
Goto Top

Bildupload ins falsche Verzeichnis

Ich probiere gleichzeitig eine andere Version eines Bild-Uploades aus...
Bei diesem hier ist das problem, dass er das Bild in das falsche verzeichniss hochläd...
Aber wieso? Der Ordner wird richtig erstellt.

Schaut euch das bitte mal an.

gruß Aleks

$pfad1 = "./admin/einsatz_bilder/";  
	  $pfad2 = $_REQUEST['nummer'];  
	  $pfad3 = "/";  
	  $pfad = "$pfad1$pfad2$pfad3";  
			mkdir($pfad, 0777);
			#Bildupload-Script
			
// Maximale Dateigrösse in Byte

$max_size = 20480;

// Maximale Breite in Pixel

$max_width = 800;

// Maximale Höhe in Pixel

$max_height = 800;

//
// Main Script
//

IF ($_POST["gesendet"]) { // Nur ausführen wenn das Upload Formular gesendet wurde  

      IF ($_FILES['upload']['type'] == "image/gif" || $_FILES['upload']['type'] == "image/jpeg" || $_FILES['upload']['type'] == "image/pjepg") { // Prüfen ob der MIME Typ korrekt ist  

         IF ($_FILES['upload']['size'] <= $max_size) { // Dateigrösse prüfen  
         
            $size = getimagesize($_FILES['upload']['tmp_name']);  
            
            IF ($size <= $max_width AND $size[1] <= $max_height) { // Höhe und Breite checken
            
               $time = time();
               IF ($_FILES['upload']['type'] == "image/gif")  $name = $time.".gif";  
               IF ($_FILES['upload']['type'] == "image/jpeg") $name = $time.".jpg";  
               
               copy($_FILES['upload']['tmp_name'],"$pfad$name"); // Datei Uploaden  
               $ausgabe .= "Bild erfolgreich auf dem Server gespeichert!<br>";  
            
            } ELSE {
               $ausgabe .= "Bild ist zu breit oder zu hoch!<br>";  
            }
         
         } ELSE {
            $ausgabe .= "Bild ist zu gross!<br>";  
         }
      
      } ELSE {
         $ausgabe .= "Ungültiger Dateityp!<br>";  
      }

}   
   // HTML Formular
?>

<html>
<head>
<title>Bild upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
<style type="text/css">  
<!--
td {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #330000}
a { color:#330000; font-weight: normal }
a:active { color:#996633; text-decoration:underline }
a:hover { text-decoration:underline; color: #996633}
a:link { text-decoration:underline }
input {FONT-SIZE: 10px; COLOR: #330000; FONT-FAMILY: verdana, arial, helvetica, sans-serif; BACKGROUND-COLOR: #FFFFFF; BORDER-RIGHT: #330000 1px solid; BORDER-TOP: #330000 1px solid; FONT-SIZE: 10px; BORDER-LEFT: #330000 1px solid; COLOR: #330000; BORDER-BOTTOM: #330000 1px solid; FONT-FAMILY: verdana, arial, helvetica, sans-serif; BACKGROUND-COLOR: #FFFFFF }
-->
</style>
</head>

<body bgcolor="#FFFFFF" text="#000000">  
<form name="bildupload" enctype="multipart/form-data" method="post" action="index.php?section=admin&section=upload">  
  <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" BGCOLOR="#996633" width="400" align="center">  
  <TR>
    <TD>
        <table border="0" cellspacing=1 cellpadding=4 bgcolor="#996633" width="100%">  
          <TR>
            <TD bgcolor="#F6E8D9" colspan="2"> <b>Bild upload</b></TD>  
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="">Dateigr&ouml;sse:</TD>  
            <TD bgcolor="#FFFFFF" background=""> Maximal  
              <b><? echo $max_size; ?></b>
              Bytes<br>
            </TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="">Breite:</TD>  
            <TD bgcolor="#FFFFFF" background="">Maximal  
              <b><? echo $max_width; ?></b>
              Pixel</TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="">H&ouml;he:</TD>  
            <TD bgcolor="#FFFFFF" background="">Maximal  
              <b><? echo $max_height; ?></b>
              Pixel</TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="" valign="top">Datei ausw&auml;hlen:<br>  
              <br>
            </TD>
            <TD bgcolor="#FFFFFF" background="">  
              <input type="file" name="upload" size="30">  
              <br>
              <b><? echo $ausgabe; ?></b>
            </TD>
          </TR>
          <TR align="center">  
            <TD bgcolor="#FFFFFF" background="" colspan="2">  
              <input type="hidden" name="gesendet" value="1">  
              <input type="submit" name="Upload" value="Upload">  
            </TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="" align="center" colspan="2"></TD>  
          </TR>
        </TABLE>
    </TD>
  </TR>
</TABLE>
</form>

Content-Key: 59206

Url: https://administrator.de/contentid/59206

Printed on: April 18, 2024 at 00:04 o'clock

Member: Dani
Dani May 16, 2007 at 21:07:53 (UTC)
Goto Top
G' Abend,
du hast es wohl eilig, wa?? face-smile
Also ich habe dein PHP-Teil ein bisschen überarbeitet:
<?php
$pfad = "admin/einsatz_bilder";  
$einsatznr = $_REQUEST['nummer'];  

mkdir($pfad."/".$einsatznr, 0777);  
  
// Maximale Dateigrösse in Byte 
$max_size = 20480;

// Maximale Breite in Pixel
$max_width = 800;

// Maximale Höhe in Pixel
$max_height = 800;


// Main Script
IF ($_POST["gesendet"]) { // Nur ausführen wenn das Upload Formular gesendet wurde  

      IF (($_FILES['upload']['type'] == "image/gif") || ($_FILES['upload']['type'] == "image/jpeg") || ($_FILES['upload']['type'] == "image/pjepg")) { // Prüfen ob der MIME Typ korrekt ist  

         IF ($_FILES['upload']['size'] <= $max_size) { // Dateigrösse prüfen  
       
            $size = getimagesize($_FILES['upload']['tmp_name']);  
        
            IF (($size <= $max_width) AND ($size[1] <= $max_height)) { // Höhe und Breite checken
            
               IF ($_FILES['upload']['type'] == "image/gif")  $bildname = time().".gif";  
               IF ($_FILES['upload']['type'] == "image/jpeg")  $bildname = time().".jpg";  
  
               copy($_FILES['upload']['tmp_name'], $pfad."/".$einsatznr."/"$bildname); // Datei Uploaden  

               $ausgabe .= "Bild erfolgreich auf dem Server gespeichert!<br>";  

            } ELSE {
               $ausgabe .= "Bild ist zu breit oder zu hoch!<br>";  
            }

         } ELSE {
            $ausgabe .= "Bild ist zu gross!<br>";  
         }

      } ELSE {
         $ausgabe .= "Ungültiger Dateityp!<br>";  
      }

}   
?>....
Müsste so gehen. Allerdings, ob du im copy gleich umbenennen kannst weiß ich gerade aus dem ff heraus auch nicht.


Gruß
Dani
Mitglied: 23587
23587 May 16, 2007 at 21:25:11 (UTC)
Goto Top
Leider funktioniert das immer noch nicht... komisch...

Könnt ihr es bitte noch weiter probieren?

Gruß Aleks
Member: Dani
Dani May 17, 2007 at 08:39:14 (UTC)
Goto Top
Moin Alex,
naja....Fehlermeldungen hast du wohl bei dir abgestellt. face-smile Also erstmal, du kannst keine JPG - Bilder hochladen - wird einfach nicht erkannt bzw. nicht zugelassen.

So funktioniert es bei auf dem XAMPP - System:
<?php
$pfad = "admin/einsatz_bilder";  
//$einsatznr = $_REQUEST['nummer'];  
$einsatznr = "3";  
mkdir($pfad."/".$einsatznr, 0777);  
  
// Maximale Dateigrösse in Byte 
$max_size = 20480;

// Maximale Breite in Pixel
$max_width = 800;

// Maximale Höhe in Pixel
$max_height = 800;

// Main Script
IF ($_POST["gesendet"]) { // Nur ausführen wenn das Upload Formular gesendet wurde  

      IF (($_FILES['upload']['type'] == "image/gif") || ($_FILES['upload']['type'] == "image/jpeg") || ($_FILES['upload']['type'] == "image/pjpeg")) { // Prüfen ob der MIME Typ korrekt ist  

         IF ($_FILES['upload']['size'] <= $max_size) { // Dateigrösse prüfen  
       
            $size = getimagesize($_FILES['upload']['tmp_name']);  
        
            IF (($size <= $max_width) AND ($size[1] <= $max_height)) { // Höhe und Breite checken
            
               IF ($_FILES['upload']['type'] == "image/gif")  		$bildname = time().".gif";  
               ELSE IF ($_FILES['upload']['type'] == "image/jpeg")  $bildname = time().".jpg";  
			   ELSE IF ($_FILES['upload']['type'] == "image/jpg")  	$bildname = time().".jpg";  
  
               copy($_FILES['upload']['tmp_name'], $pfad."/".$einsatznr."/".$bildname); // Datei Uploaden  

               $ausgabe = "Bild erfolgreich auf dem Server gespeichert!<br>";  

            } ELSE {
               $ausgabe = "Bild ist zu breit oder zu hoch!<br>";  
            }

         } ELSE {
            $ausgabe = "Bild ist zu gross!<br>";  
         }

      } ELSE {
         $ausgabe .= "Ungültiger Dateityp!<br>";  
      }

}   
?>

<html>
<head>
<title>Bild upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
<style type="text/css">  
<!--
td {  font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #330000}
a { color:#330000; font-weight: normal }
a:active { color:#996633; text-decoration:underline }
a:hover { text-decoration:underline; color: #996633}
a:link { text-decoration:underline }
input {FONT-SIZE: 10px; COLOR: #330000; FONT-FAMILY: verdana, arial, helvetica, sans-serif; BACKGROUND-COLOR: #FFFFFF; BORDER-RIGHT: #330000 1px solid; BORDER-TOP: #330000 1px solid; FONT-SIZE: 10px; BORDER-LEFT: #330000 1px solid; COLOR: #330000; BORDER-BOTTOM: #330000 1px solid; FONT-FAMILY: verdana, arial, helvetica, sans-serif; BACKGROUND-COLOR: #FFFFFF }
-->
</style>
</head>

<body bgcolor="#FFFFFF" text="#000000">  
<form name="bildupload" enctype="multipart/form-data" method="post" action="index.php?section=admin&section=upload">  
  <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" BGCOLOR="#996633" width="400" align="center">  
  <TR>
    <TD>
        <table border="0" cellspacing=1 cellpadding=4 bgcolor="#996633" width="100%">  
          <TR>
            <TD bgcolor="#F6E8D9" colspan="2"> Bild upload</TD>  
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="">Dateigr&ouml;sse:</TD>  
            <TD bgcolor="#FFFFFF" background=""> Maximal  
              <? echo $max_size; ?>
              Bytes<br>
            </TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="">Breite:</TD>  
            <TD bgcolor="#FFFFFF" background="">Maximal  
              <? echo $max_width; ?>
              Pixel</TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="">H&ouml;he:</TD>  
            <TD bgcolor="#FFFFFF" background="">Maximal  
              <? echo $max_height; ?>
              Pixel</TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="" valign="top">Datei ausw&auml;hlen:<br>  
              <br>
            </TD>
            <TD bgcolor="#FFFFFF" background="">  
              <input type="file" name="upload" size="30">  
              <br>
              <? echo $ausgabe; ?>
            </TD>
          </TR>
          <TR align="center">  
            <TD bgcolor="#FFFFFF" background="" colspan="2">  
              <input type="hidden" name="gesendet" value="1">  
              <input type="submit" name="Upload" value="Upload">  
            </TD>
          </TR>
          <TR>
            <TD bgcolor="#FFFFFF" background="" align="center" colspan="2"></TD>  
          </TR>
        </TABLE>
    </TD>
  </TR>
</TABLE>
</form>
Du solltest noch vor dem mkdir ... überprüfen, ob das Verzeichnis schon existiert. Sonst siehsts du immer eine schöne Fehlermeldung. Woher solltest du eigentlich die Einsatznummer?? Ich habe sie zum Testen gefixt (siehe oben). => Funktioniert ansonsten ohne Problme.


Gruß
Dani
Member: Guenni
Guenni May 17, 2007 at 12:53:14 (UTC)
Goto Top
@uploader

Hi,

@Aleks

Bei diesem hier ist das problem, dass er das Bild in das falsche verzeichniss hochläd...

In welchem Verzeichnis landet das Bild denn?

Leider funktioniert das immer noch nicht... komisch...
Könnt ihr es bitte noch weiter probieren?

Diesen Appell find' eigentlich fast schon unverschämt.
Bei allen Diskussionsverläufen "rund um deine Feuerwehrseite" hat man
eigentlich nie den Eindruck, dass von deiner Seite mal was kommt, außer
dass gepostete Skripte nicht funktionieren oder dass du schon etliche
Sachen im Internet gefunden hast, die aber nicht ganz genau das enthalten,
was du dir vorstellst.

Oder es herrscht Funkstille. Dass diese Diskussionsverläufe dann
ergebnislos im Sande verlaufen, braucht ja dann niemand zu verwundern.

Du wirst in den seltensten Fällen Skripte finden, die du nicht deinen
Bedürfnissen anpassen musst. Also dazu solltest du schon in der
Lage sein.

Desweiteren wäre es sehr hilfreich, wenn du dich auf wesentliches
beschränken würdest, und nicht jedesmal 2 DIN-A4 seitenlange
bzw. 2 DIN-A4 seitenbreite Formulare postest.
Die RunterRaufLinksRechts-Scrollerei bei deinen Postings macht
nämlich keinen Spass!

@Dani

du kannst keine JPG - Bilder hochladen - wird einfach nicht erkannt bzw. nicht zugelassen.

… war ja nicht die Fragestellung. Seine Antwort war ja, dass es gar nicht funktioniert, oder
was auch immer.

Deshalb war deine Erweiterung der Überprüfung auf
ELSE IF ($_FILES['upload']['type'] == "image/jpg") …
eigentlich unnütz.

Beide Skripte von dir hab' ich ausprobiert, Bilder werden nicht gespeichert.
Ist ja auch nicht schlimm, vielleicht hab' ich ja 'nen Fehler bei Pfadanpassung
oder sonst wo gemacht. Es kommt aber auch keine Fehlermeldung, was ja entweder
auf fehlerhafte Programmlogik schließen läßt, oder dass ein entsprechender
Fehler nicht berücksichtigt wird.

Frage ist vielmehr: Wie geht man das Problem an?
In dem ich mich auf das Wesentliche konzentriere.
Was will ich? Eine Datei "hochladen".
Ob es Bilder, Zip's oder sonst was sind, ob die Datei X-Byte groß ist,
ist das Bild größer als 800x600, ist ja erstmal egal.
Erst wenn das funktioniert, kann ich mich an die Arbeit machen,
entsprechende Filter zu setzen oder aufwändige Formulare zu kreieren.

Und auf das Wesentliche beschränkt sich jetzt mal mein Skript.

Im Rootverzeichnis des Webservers existiert ein Unterverzeichnis
names pub.

Eigentümer/Gruppe dieses Verzeichnisses sind Apache-User/Apache-Group.

In meinem Fall sind das:
www-data – User
www-data – Group

Nachzulesen in der Konfigurationsdatei des Webservers.

Beide haben Schreib- und Leserecht auf diesem Verzeichnis.

Das Formular enthält eine Textbox zur Eingabe eines Zielverzeichnisses
unterhalb pub.


Es findet keine Filterung bezüglich Typ, Größe etc. statt. Dateien
sollen jetzt erstmal "hochgeladen" werden können. Werden Verzeichnisse
erstellt und die Datei(en) korrekt kopiert, mache ich mich mal an die Arbeit
filtere Kriterien.

Skript wurde korrigiert. Neue Version mit REGISTER_GLOBALS=OFF

/*
Mit $HTTP_SERVER_VARS['DOCUMENT_ROOT'] wird das Rootverzeichnis des Servers ermittelt, 
pub ist ein Unterverzeichnis. 
Lese- und Schreibrecht auf pub haben Apache-User und Apache-Group,
nachzulesen in Konfigurationsdatei des Webservers.
*/
$pfad=$HTTP_SERVER_VARS['DOCUMENT_ROOT']."/pub/";  
$cmd=$_POST['cmd'];  
if($cmd=="Hochladen"){  
 /*
 EinsatzNr wird mit dem Formular gesendet und bestimmt den Ordner,
 in dem das Bild gespeichert wird
 */
 $einsatznr=$_POST['einsatznr'];  
 /*
 Es wird überprüft, ob EinsatzNr ein Verzeichnis ist. Wenn nicht, wird
 es erstellt und dem Pfad angehangen.
 Falls es existiert, wird es dem Pfad angehangen.
 */
 if(!is_dir($pfad.$einsatznr)){
  mkdir($pfad.$einsatznr,0777);
	$pfad.=$einsatznr."/";  
 }else{
 			 $pfad.=$einsatznr."/";  
 			 }
 /*
 Im folgenden werden die Variablen für die copy-Funktion
 deklariert und belegt.
 */
 $quelle=$_FILES['myfile']['tmp_name'];  
 $quellenname=$_FILES['myfile']['name'];  
 $ziel=$pfad.$quellenname;
 if(copy($quelle,$ziel)){
  echo "Datei $quellenname wurde hochgeladen.<br>";   
	echo "-------------------------------------<br>";  
	echo "Quelle: ".$quelle."<br>";  
	echo "Quellenname: ".$quellenname."<br>";  
	echo "Ziel: ".$ziel."<br>";  
 }else{
 			 echo "Fehler beim Hochladen der Datei ".$quellenname."<br>";  
			 }
}
<!DOCTYPE HTML PUBLIC "-W3CDTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Datei-Upload</title>
</head>
<body>
<p>Bilder-Upload</p>
<form enctype="multipart/form-data" method="post" action="upload.php">
Einsatz-Nr: <input type="text" name="einsatznr">
Bild: <input type="file" name="myfile"><input type="submit" name="cmd" value="Hochladen">
</form>
</body>
</html>

Grüße
Günni
Member: Dani
Dani May 17, 2007 at 13:01:37 (UTC)
Goto Top
Hi Günni!
… war ja nicht die Fragestellung. Seine Antwort war ja, dass es gar nicht funktioniert, oder
was auch immer.
Ich finde, sowas gehört einfach dazu. Ich wollte zuerst ein jpg - Bild hochladen. Jedoch kam dann die entsprechende Meldung. Somit dachte ich mir, sagsts ihm einfach.

Beide Skripte von dir hab' ich ausprobiert, Bilder werden nicht gespeichert.
Ist ja auch nicht schlimm
Das wundert mich jetzt grad völlig. Ich habe bei meinem letzten Kommentar noch mein Testsystem angeben. Vielleicht liegt es an den unterschiedlichen OS's.


Gruß
Dani
Member: Guenni
Guenni May 17, 2007 at 14:08:28 (UTC)
Goto Top
@Dani

Hi,

Ich finde, sowas gehört einfach dazu.

... ist ja auch richtig. Aber wenn ich generell z.B. das Problem
habe, Bilder hochzuladen, sollte ich doch primär dieses Problem
lösen.

Alles andere ist doch nur Beiwerk, was Fehler produzieren könnte,
die ich zusätzlich abfangen muß. Also lass ich das doch erstmal weg.

Und wenn ich dieses primäre Problem gelöst habe, kann ich mich
um weiterführende Sachen kümmern, wie Filterung von Datei-Typen,
ausschmücken von Formularen etc..

Dass die Erweiterung auf Dateitypen unnütz war, ging eigentlich
somit mehr in Richtung Aleksander.

Wenn er es schafft, Bilder ins richtige Verzeichnis hochzuladen,
dann kann er sein Skript posten, aber bitte Aleks: keine seitenlangen
Formulare, und dann kann sich Gedanken über Filtern machen.

Das wundert mich jetzt grad völlig. Ich habe bei meinem letzten Kommentar
noch mein Testsystem angeben. Vielleicht liegt es an den unterschiedlichen OS's.

Das mag sein. Ich hatte ja auch geschrieben, dass ich vielleicht selber
Fehler bei der Pfad-Anpassung gemacht habe.

Ich habe auch zuhause kein XAMPP – System, sondern einen Linux-Server
mit Apache incl. PHP, MySQL etc.. Vielleicht liegt's da wirklich an der
Konfiguration. Mein Skript funkt. jedenfalls klaglos bei mir, und bei dir...?

Grüße
Günni
Member: Dani
Dani May 17, 2007 at 14:20:16 (UTC)
Goto Top
Hi,
Mein Skript funkt. jedenfalls klaglos bei mir, und bei dir...?
Ne...funtkioniert nicht! Ich habe alles 1:1 übernommen. Das pub - Verzeichnis noch angelegt. Seltsam....


Gruß
Dani
Mitglied: 23587
23587 May 17, 2007 at 14:28:27 (UTC)
Goto Top
Leider funktioniert alles nicht richtig bei mir.
Wenn ich ein Bild hochladen packt er das nicht in das Verzeichniss, welches er angelegt hat, sonder immer in "einsatz_bilder".
Und ich weiß einfach nicht wieso...

Ich bruache dringend Hilfe, weil die Seite bald offiziell online gehen soll.


Gruß Aleks
Member: Guenni
Guenni May 18, 2007 at 11:51:05 (UTC)
Goto Top
@uploader

@Dani

Hi,

bei mir steht die Variable register_globals=on, die habe ich jetzt auf off gestellt,
jetzt funktioniert das Skript bei mir auch nicht, hätte ich natürlich berücksichtigen
müssen. face-smile

Habe das Skript korrigiert.

Grüße
Günni

@Aleks

Hi,

jetzt versuchen wir's mal Schritt für Schritt.

Leg' einfach mal 'ne Datei an, test.php, Inhalt:

printf("<h1>Alle SERVER-Parameter</h1>\n");  
if ( isset($HTTP_SERVER_VARS))
  {
    reset($HTTP_SERVER_VARS); 
    while(list($k, $v) = each($HTTP_SERVER_VARS)) {
    printf("Variable: %s -- Wert: %s<br>\n", $k, $v);  
    }
  }

Rufe die Datei auf. Dort werden dir die Servervariablen angezeigt.
Erste Variable müsste DOCUMENT_ROOT sein, der Wert dahinter
das Verzeichnis deines Webservers. O.K.??

Diese Variablen werden im Array HTTP_SERVER_VARS gespeichert, abrufbar mit:
$Var = $HTTP_SERVER_VARS['VARIABLEN_NAME'];


Öffne die Datei test.php.
1.)
Füge die Zeile echo $HTTP_SERVER_VARS['DOCUMENT_ROOT']." - Rootverzeichnis des Webservers.<br>";
hinzu, und vergleiche die Ausgabe mit der Ausgabe des o.g. Code's.
2.)
Wenn das O.K. ist, hänge an DOCUMENT_ROOT dein Bilderverzeichnis dran.
Das Verzeichnis einsatz_bilder MUSS Schreib/Lese/Öffnen-Recht für
alle haben!! <-- WICHTIG!!
Das Verzeichnis einsatz_bilder muss sich dementsprechend im Serververzeichnis befinden.
Also, wenn dir mit echo $HTTP_SERVER_VARS['DOCUMENT_ROOT'] so was
angezeigt wird wie: /var/www, dann erstelle das Verzeichnis auch in www.
Ändern kann man das später immer noch.
3.)
Lass dir wieder mit echo den Pfad ausgeben, und kontrolliere ihn auf Fehler.
Hier müsste dann(siehe Punkt 2) /var/www/einsatz_bilder/ rauskommen.
4.)
Wenn der Pfad O.K. ist, versuche in einsatz_bilder ein Verzeichnis zu
erstellen und an den Pfad anzuhängen. Den Pfad mit echo ausgeben
und auf Fehler überprüfen.
Hier müsste dann(siehe Punkt 3) /var/www/einsatz_bilder/bild/ rauskommen

printf("<h1>Alle SERVER-Parameter</h1>\n");  
if ( isset($HTTP_SERVER_VARS))
  {
    reset($HTTP_SERVER_VARS); 
    while(list($k, $v) = each($HTTP_SERVER_VARS)) {
    printf("Variable: %s -- Wert: %s<br>\n", $k, $v);  
    }
  }

/* ------------------------------------------------------------------------------------------------------ */
// 1.)
echo $HTTP_SERVER_VARS['DOCUMENT_ROOT']." - Rootverzeichnis des Webservers.<br>";  
// 2.)
$pfad=$HTTP_SERVER_VARS['DOCUMENT_ROOT']."/einsatz_bilder/";  
// 3.)
echo $pfad;
// 4.)
if(!is_dir($pfad."bild")){  
 mkdir($pfad."bild",0777);  
 $pfad.="bild/";  
}else{
	$pfad.="bild/";  
	}
echo $pfad;

bild wird dann natürlich gegen einsatznr ausgetauscht face-smile

Wenn du alle 4 Schritte abgearbeitet hast, müsste beim letzten echo $pfad:
/Verzeichnispfad_deines_Webservers/einsatz_bilder/bild/
stehen.
Wenn dem so sein sollte, können wir uns daran machen, die copy-Funktion aufzubauen.

Grüße
Günni
Mitglied: 23587
23587 May 18, 2007 at 12:19:43 (UTC)
Goto Top
Das hier Antwortet mir der Server.

Alle SERVER-Parameter
Variable: MvCONFIG_DIR_MIVA -- Wert: /srv/www/vhosts/ff.beatside.de/httpdocs

/srv/www/vhosts/ff.beatside.de/httpdocs - Rootverzeichnis des Webservers.
/srv/www/vhosts/ff.beatside.de/httpdocs/einsatz_bilder//srv/www/vhosts/ff.beatside.de/httpdocs/einsatz_bilder/
Member: Guenni
Guenni May 27, 2007 at 20:48:00 (UTC)
Goto Top
@all Interessierte,

warum kam kein Upload zustande, obwohl das Skript bei mir zuhause und
bei meinem Webhoster funktionierte?

Manche Webhoster betreiben PHP im safe_mode, welcher eine handvoll
Funktionen blockiert. Mehr darüber und eine Liste der betroffenen Funktionen unter:

http://www.php.net/manual/de/features.safe-mode.php

Wird ein Upload-Skript via FTP hochgeladen, so werden FTP-User/Group Eigentümer des
Skripts und erhalten entsprechende Rechte. Versucht man nun mit diesem SKript
eine Datei hochzuladen, so wird das Skript nicht etwa vom FTP-User ausgeführt!!

Wenn man eine Website aufruft, so wird ja auf dem Webserver ein Prozess gestartet.
Den Namen von Besitzer/Gruppe dieses Prozesses findet man in der Konfiguration
des Webservers unter User und Group.

Versucht man nun mit einem entsprechendem Skript eine Datei hochzuladen, so wird
das Skript eben von diesem User ausgeführt. Und das wird verhindert, wenn PHP
im safe_mode betrieben wird.

Abhilfe?

Abhilfe schafft das setuid-Bit, ein erweitertes Dateirecht, mit dem das Skript
ausgestattet sein muß.

Diese Bit hat den Wert 4000 und wird einfach auf die normalen Rechte aufaddiert, z.B.:

chmod 4777 Skriptname.

Heißt in diesem Fall:

Besitzer des Skripts ist FTP-User
Ausführer des Skripts ist der Besitzer des Prozesses, s.o..
Ausgeführt wird das Skript also vom Besitzer des Prozesses im Namen des Besitzers.

Tja, besser kann ich's nicht erklären.

Grüße, VVV
Günni