Dateiupload funktioniert nicht - Rechtevergabe ?

Irgendwelche Probleme mit XAMPP für Linux? Dann ist hier genau der richtige Ort um nachzufragen.

Dateiupload funktioniert nicht - Rechtevergabe ?

Postby Daniel » 15. January 2003 16:08

Hallo,
bin noch verhältnismäßig neu in der Linuxwelt und es scheint mir ein bißchen so als wenn das eine never-ending-story wäre :)
Na ja-wenn man nicht auch nochmal arbeiten müße, könnte man da Jahre dranrumfummeln und probieren. Nachdem meine Suse 8.1 ApachePhp installation nun mittlerweile garnicht mehr leben will, habe ich wammp installiert und war erstamal begeistert. Leider funzten nach ersten Tests meine Dateiupload Skripte nicht mehr. Denke, dass es wohl mit den Dateirechten zu tun hat. habe htdocs chmod 777 gemacht aber no way. Über Samba kann ich auch ins verzeichnis schreiben also von daher ... ?
Hab Wammp im Moment als root laufen (ja ich weiß soll man net machen), aber so ist es jetzt halt :wink:
Wäre super wenn mir einer sagen könnte, wie ich es jetzt konfigurieren muß, um Dateien auf den Server zu schieben. Ihr könntet diese User/Rechte-Geschichte evtl. ja auch im FAQ erwähnen.
Thx und Grüße im voraus, Daniel
P.S.: sonst läuft alles Supi bis auf mysql aber das kann ich auch auffer windose laufen lassen. Vermute, dass das mit der Susefirewall zusammen hängt.
Daniel
 

Postby DJ DHG » 18. January 2003 09:03

Moin Moin
erstmal das heist nicht "wammp" sonder "wampp" für Windows und unter linux heist es "lampp"! (nicht böse gemeint, nur der richtigkeit halber)

und das mit deinem FTP prob hast du überhaupt einen FTP-Server laufen der das "htdocs" verzeichniss freigegeben hat?
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby Daniel » 18. January 2003 16:22

Ja sorry,
hab mich vielleicht ein bischen ungenau ausgredrückt. Mit Dateiuploap meinte ich mein PHP_Picture_Resize-Script. Soll heißen User können per Bilder auffen Server laden, die dann auf Thumbnail Größe gerechnet werden. Das Skript funzt bis jetzt überall nur auf meinem wampp :wink: scheitert es schon beim Dateiupload.
Hoffe jetzt wird klarer worauf ich hinaus will.
Greetz, Daniel
Daniel
 

Postby Morpheus » 30. January 2003 15:15

Hi
Ich habe das selbe Problem. Ich kann auf Suse 8.1 und Lampp 0.96 keine Dateien per PHP auf den Server hochladen.
Ich habe es auch auf anderen Servern ausprobiert, mit Win2k und Wampp funktioniert es und ebenso bei den Servern von all-inkl.com, wo kann also das Problem liegen?

Eigentlich ist es nicht ganz richtig, wenn ich sage das ich Dateien nicht hochladen kann, es sieht so aus, dass das Bild doppelt so groß wird, aber 0x0 Pixel hat. Also vollkommen unbrauchbar wird.

Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Oswald » 30. January 2003 15:37

Huhu Morpheus! Huhu Daniel!

Kann mir mal einer von Euch das PHP-Skript zuschicken oder wenn's nicht so groß ist, hier posten?

Gruß,
Oswald
User avatar
Oswald
Apache Friends
 
Posts: 2718
Joined: 26. December 2002 19:51
Location: Berlin, Germany
Operating System: Linux

Postby Morpheus » 30. January 2003 15:41

Hi
Hier der Code des Upload Scriptes.
Anmerkungen:
Ich habe die Funktion resize() entfernt, da sie erst nach dem Upload läuft.
In der Variable $wwwroot befindet sich der Link zum Rootverzeichnis.

<?php

function resize($bild,$dir)
{

}

if (isset($_REQUEST["PHPSESSID"]) and isset($_REQUEST["Verzeichnis"]))
{

//Session laden
include("sess.inc");
$Verzeichnis = $_REQUEST["Verzeichnis"];
$Sess_ID = $_REQUEST["PHPSESSID"];
$absolute_path = "$wwwroot/User/" . str_replace(" ","_",$sess_name) . "/" . $Verzeichnis; //Path to where files are uploaded
$limit_ext = "yes"; //do you want to limit the extensions of files uploaded
$extensions = array(".gif", ".jpg", ".jpeg"); //List extensions you want files uploaded to be
$ext_count = sizeof($extensions);
if(!isset($upload)) {
$upload = "";
}
switch($upload) {
default:

?>
<html>

<head>
</head>

<body topmargin="10" leftmargin="0" bgcolor="#18576F" link="#818EA0" vlink="#5C697A" alink="#818EA0" text="#FFFFFF" style="font-family: Verdana; font-size: 8pt; color: #FFFFFF">

<div align="center">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="400">
<tr>
<td bgcolor="#5E6A7B" height="25">
<p align="center"><font size="2"><b>Dateien Hochladen</b></font></td>
</tr>
<tr>
<td bgcolor="#818EA0"><font size="2">Es gelten folgende Begrenzungen:</font><ul type="square">
<li><font size="2">Die Datei muss folgende Endung haben: <b><?php
if (($extensions == "") or ($extensions == " ") or ($ext_count == "0") or ($ext_count == "") or ($limit_ext != "yes") or ($limit_ext == "")) {
echo "any extension";
} else {
$ext_count2 = $ext_count+1;
for($counter=0; $counter<$ext_count; $counter++) {
echo "& $extensions[$counter]";
}
}?>
</b></font></li>
<li><font size="2">Keine Leerstellen im Dateinamen</font></li>
<li><font size="2">Keine unerlaubten Sonderzeichen
(/,*,\,etc)</font><BR>
</li>
</ul>
<font size="2">Je nach Größe und Verbindungsgeschwindigkeit, kann der Upload etwas Zeit in Anspruch nehmen!</font>
<form method="POST" action="upload.php?upload=doupload&PHPSESSID=<?php echo($Sess_ID); ?>&Verzeichnis=<?php echo($Verzeichnis); ?>" enctype="multipart/form-data">
<p align="center">
<input type="file" name="file" size="30" style="font-family: v; font-size: 10pt; color: #5E6A7B; border: 1px solid #5E6A7B; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1"><br>
<br>
<button name="submit" type="submit" style="font-family: v; font-size: 10pt; color: #5E6A7B; border: 1px solid #5E6A7B; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1">Hochladen</button>
</p>
</form>
<p>
</td>
</tr>
</table>
</div>


</body>

</html>
<?php
break;
case "doupload":
if (!is_dir($absolute_path))
{
mkdir($absolute_path, 0777);
}
$endresult = "<font size=\"2\">Datei hochgeladen</font>";
if ($file_name == "") {
$endresult = "<font size=\"2\">Keine Datei ausgewählt</font>";
}else{
if(file_exists("$absolute_path/$file_name")) {
$endresult = "<font size=\"2\">Datei existiert bereist, wähle einen anderen Namen aus</font>";
}else{
$ext = strrchr($file_name,'.');
if (($limit_ext == "yes") && (!in_array(strtolower($ext),$extensions))) {
$endresult = "<font size=\"2\">Falscher Dateityp</font>";
}else
{
if (filesize($file) >= 2097152) {
$endresult = "<font size=\"2\">Datei zu groß! Die Datei darf nicht größer als 2 MB sein.</font>";
}else{
@copy($file, $absolute_path . "/" . $file_name) or $endresult = "<font size=\"2\">Fehler bei der Übertragung</font>";
}
}
}
}
?>
<html>

<head>
<title>Hochladen</title>
</head>

<body topmargin="10" leftmargin="0" bgcolor="#18576F" link="#818EA0" vlink="#5C697A" alink="#818EA0" text="#FFFFFF" style="font-family: Verdana; font-size: 8pt; color: #FFFFFF">

<div align="center">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="400">
<tr>
<td bgcolor="#5E6A7B" height="25">
<p align="center"><font size="2"><b>Datei hochladen</b></font></td>
</tr>
<tr>
<td bgcolor="#818EA0">
<center><?php
echo($endresult);?>
<script language="JavaScript">

function auswahl(){
document.formular.ziel.select();
document.formular.ziel.focus();
window.clipboardData.setData('Text', document.formular.ziel.value)
}
</script>
<?php
if ($endresult == "<font size=\"2\">Datei hochgeladen</font>")
{
resize($file_name,$absolute_path . "/");
$path = str_replace("$wwwroot/","",$absolute_path);
?>
<br><form name="formular">
Link: <input readonly name="ziel" type="text" size="50" value="<?php echo("http://" . $_SERVER["SERVER_NAME"] . "/" . $path . "/" . $file_name);?>">
</form>
<a href="javascript:auswahl()" onmouseover="window.status='Link in Zwischenablage kopieren';return true">in die Zwischenablage</a>
<br>Kopiere den Link in das Grafik einfügen Fenster.
<?php
}
?>
</center>
</td>
</tr>
</table>
</div>


</body>

</html>
<?php
break;
}
}
?>
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Oswald » 30. January 2003 17:26

Huhu Morpheus!

Danke für das Listing!

Nehmen wir mal $wwwroot hat den Wert /opt/lampp/htdocs

Existiert dort das Verzeichnis User? Also /opt/lampp/htdocs/User?

Wenn ja, welche Zugriffsrechte hat dieses Verzeichnis? Bzw. was gibt ls -ld /opt/lampp/htdocs/User aus?

Viele Grüße,
Oswald
User avatar
Oswald
Apache Friends
 
Posts: 2718
Joined: 26. December 2002 19:51
Location: Berlin, Germany
Operating System: Linux

Postby Morpheus » 30. January 2003 17:42

Hi
für meinen Server gilt $wwwroot hat den Wert /www/htdocs
Der Ordner User existiert und mit dem Befehl bekam ich dies als Antwort:
drwxrwxrwx 8 nobody www und noch Datum und den Namen
Wo liegt nun der Fehler?
Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Morpheus » 05. February 2003 21:51

fällt den niemanden etwas ein?
Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Daniel » 06. February 2003 01:49

Hallo Ihr,
Bei mir lag es an den Schreibrechten
Mit einem chown nobody.root tmp/ klappte es dann :)
Jetzt muss ich nur noch schauen, dass die mit Samba angelegten Verzeichnisse die gleichen Dateirechte haben.
Linux ist echt heftig :wink:
Alles Gute, Daniel
Daniel
 

Postby Morpheus » 06. February 2003 19:30

Hi
Ich habe meinen tmp Ordner mit diesen Infos:
CHMOD 777
Benutzer Nobody
Gruppe Nobody

UNd trotzdem werden alle Bilder einfach nur schwarz
Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Guest » 07. February 2003 15:40

Ich bin ja wirklich nen Linuxnewbee aber unter welchem Benutzer läuft denn dein Apache? Ich denke, dass Nobody dann mindestens in der Gruppe wwwroot (oder worunter deiner Server auch immer läuft) Mitglied sein muss.
Wie gesagt - ich hab da nicht den vollen Durchblick aber seitdem ich Samba angewiesen habe die Verzeichnisse als Bentzter Nobody Gruppe Root anzulegen, funzt es bei mir und ich habe numal momentan den Apache noch als root laufen.
Das folgende Skript funktioniert definitv bei mir:
Man muß nur vorher die Verzeichnisse bild und bildklein anlegen.
Code: Select all
<?
function image_create_thumbnail($userfile_name){
$size=getimagesize("bild/$userfile_name");
$width=$size[0];
$height=$size[1];
$newwidth = 60;
$newheight = 50;
    $oldimage=ImageCreateFromJPEG("bild/$userfile_name");
    $osize=getimagesize("bild/$userfile_name");
       $owidth=$osize[0];
       $oheight=$osize[1];
    $newimage=ImageCreateTruecolor($newwidth,$newheight);
    ImageCopyResampled($newimage,$oldimage,0,0,0,0,$newwidth,$newheight,$width,$height);
    ImageJPEG($newimage,"bildklein/$userfile_name",80);
   echo "Alles richtig gemacht :)";
return $userfile_name;
}

if(isset($todo)){
echo "$userfile_name kommt an";
$im_path = "bild/$userfile_name";
$im_path_resized = "bildklein/$userfile_name";
@move_uploaded_file($userfile,$im_path) or die ("Fehler beim Uploaden des Bildes");
image_create_thumbnail($userfile_name);   
}

?>
<FORM ENCTYPE="multipart/form-data" name="Abschicken" ACTION="<?echo $php_self?>" METHOD=POST>
<table width="100%" border="0" cellspacing="5" cellpadding="5" height="207">
    <tr>
    <td>
        <input type="file" name="userfile"  class="formfield">
    </td>
   <tr>
    <td>
      <input type="submit" value="Abschicken" class="sysbutton">
      <input type="hidden" name="todo">
   </td>
  </tr>
</table>
</form>

Wenn das nicht klappt, wid es wohl ein Problem in der Rechtevergabe sein.
Greetz und viel Erfolg, Daniel
Guest
 

Postby Morpheus » 08. February 2003 12:53

Bei mir klapt diese Code nicht ganz:

Ich bekomme diese Rückmeldung

IMGP0596 (Medium).JPG kommt an
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'User/IMGP0596 (Medium).JPG' is not a valid JPEG file in /www/htdocs/uploadtest.php on line 8

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /www/htdocs/uploadtest.php on line 13

Warning: imagejpeg() [function.imagejpeg]: Unable to open 'User/' for writing in /www/htdocs/uploadtest.php on line 14
Alles richtig gemacht :)


Ich habe alle Dateien auf Benutzer nobody und Gruppe root umgestellt aber mir ist eins aufgefallen, Dateien und Ordner die erstellt werden, bekommen als Benutzernamen nobody und Gruppe 429467295.

Ebenso werden Dateien hochgeladenen, nur die Bilder sind vollkommen durcheinander geraten, es sieht sehr stark nach Übertragungsfehlern aus. (Farbfehler, Zeilensprünge, etc) und Scripte die diese Bilder nutzen sollen sagen das oben genannte, dass das Bild kein jpeg Bild sei.

Weiss irgendwer, was das bedeutet? Warum kriegen hochgeladene Dateien nicht die richtige Gruppe?

Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Morpheus » 09. February 2003 22:42

Hi
Ich habe jetzt nochmal was nachgeschaut:
Lampp läuft als root, alle Ordner haben als Besitzer root ebenso wie Gruppe root.

Trotzdem sind alle Dateien die ich hochlade mit folgenden Rechten ausgestattet Benutzer nobody und Gruppe 429467295.
Das Problem ist aber: Die Gruppe existiert nicht mal auf meinem Rechner!!! Ich verstehe das ganze nicht mehr und will den Mist endlich am laufen haben.
Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Postby Morpheus » 09. February 2003 23:45

Und nochmal ich

Ich nähere mich der Lösung, habe das Problem mit den Benutzern gefunden. (In der httpd.conf stand ein falscher Eintrag.)

Hochgeladene Bilder haben nun den richtigen Benutzer und die richtige Gruppe.

Das Problem das die Bilder nicht richtig ankommen besteht aber immernoch nun steht im Apache Errorlog folgende Zeilen:
Corrupt JPEG data: premature end of data segment
gd-jpeg: JPEG library reports unrecoverable error: Unsupported marker type 0x47


Was soll dies nun wieder?
Morph
Morpheus
 
Posts: 218
Joined: 17. January 2003 20:58

Next

Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 21 guests