kann mir mal jemand den fehler im script suchen? PHP

Recall

Admiral Special
Mitglied seit
27.07.2002
Beiträge
1.303
Renomée
0
hi @ all!

hoffe ihr steigt bei dem quelltext durch, ich tue es nicht mehr!
bekomme folgenden fehler beim hochladen einer datei:

--------------------

Warning: copy(H:\\Daten\\Wallpaper\\Girls (klein)\\13.jpg): failed to open stream: No such file or directory in /home/host/Recall/function.php on line 4587

Upload konnte nicht erfolgreich beendet werden! :(

--------------------

hier der quelltext:

$path = "/host/images/avatar/" . $_SESSION['uid'] . "/";
$extval_use = 1;
$extval = array("php", "php3", "asp", "html", "htm", "jsp", "cfml", "shtml");
$filesize_limit_use = 1;
$filesize_limit = 400;

$message["fileisbig"] = "Die Datei ist zu groß! (".$filesize_limit."kB) :(";
$message["invext"] = "Deine Datei hat eine falsche Endung! :(";
$message["uncomplete"] = "Upload konnte nicht erfolgreich beendet werden! :(";
$message["complete"] = "Upload erfolgreich! :)";
$message["uploadbutton"] = "Hochladen!";
$message["uploadtxt"] = "Avatar Datei: ";
$message["fileexists"] = "Datei existiert berreits! :(";


$stylesheet = "
body { font-color : black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size : 8pt; }
table { border: 1px #000000 solid; background-color: #999999; font-color : black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size : 8pt;}
";




echo"
<table style=\"width: 680px; height: 600px; background-color:#DDDDDD; border:medium solid #AAAAAA;\" cellpadding=\"0\" cellspacing=\"0\" valign=\"top\"\">
<tr>
<td style=\"vertical-align:top;\">

<table>
<tr>
<td style=\"width: 671px; height: 18px; background-image: url(/images/wsc_news_topic.jpg); font-family:Arial; font-size:10pt; color:#FFFFFF;\"\">
&nbsp;&nbsp;Avatar Hochladen
</td>

<tr>
<td style=\"width: 671px; height: 80px; font-family:Arial; font-size:10pt; color:#000000;\" valign=\"top\">
";



if (is_dir ($path))
{
echo"
<center>
Bitte W&auml;len sie ein Bild aus, das hochgeladen werden soll!
<br>
Datei max. 400kB
<br>
Nicht m&ouml;glich mit Firefox und Opera!
</center>
";
}
else
{
mkdir("" . $path . "", 0700);
echo"
<center>
Ein Ordner f&uuml;r deine Dateien wurde erfolgreich erstellt!
<br>
Datei max. 400kB
<br>
Nicht m&ouml;glich mit Firefox und Opera!
</center>
";
};

$filename = substr(strrchr($_POST['file'],"\ "),1);

if (isset($_POST['upload']))
{

if($filesize_limit_use=1)
{
@$filesize = filesize($_POST['file']) / 1024; // filesize in kB
if($filesize_limit<$filesize)
{
echo "<font color='red'><center>".$message["fileisbig"]."</font></center>";
exit;
}
}

if($extval_use=1)
{
$extget = substr(strrchr($_POST['file'],"."),1);
for($i=0;$i<count($extval);$i++)
{
if($extget==$extval[$i])
{
echo "<font color='red'><center>".$message["invext"]."</font></center>";
exit;
}
}
}

if (!file_exists($path.$filename))
{
if(!copy($_POST['file'],$path.$filename))
{
echo "<font color='red'><center>".$message["uncomplete"]."</font></center>";
}
else
{
mysql_query("INSERT INTO avatar SET link='" . $path . "', uid='" . $_SESSION['uid'] . "', name='" . $filename . "', groesse='" . $filesize . "'");
echo "
<font color='red'><center>".$message["complete"]."</font></center>
";
}
}
else
{
echo "<font color='red'><center>".$message["fileexists"]."</font></center>";
}
}



echo "
<form method='post' action='main.php?seite=avatar'>
<table frame=box rules=none border=0 cellpadding=2 cellspacing=0 align='center'>
<tr><td>".$message["uploadtxt"]."<td><input type='file' name='file'>
<tr><td><td><input type='submit' value='".$message["uploadbutton"]."' name='upload'>
</table>
</form>
";


$link = mysql_query("SELECT avatar.name, avatar.groesse, avatar.aid FROM avatar WHERE avatar.uid='" . $_SESSION['uid'] . "'");

$num_link = mysql_num_rows($link);


echo"
</td>
<tr>
<td style=\"width: 671px; height: 18px; background-image: url(/images/wsc_news_topic.jpg); font-family:Arial; font-size:10pt; color:#FFFFFF;\"\" colspan=\"2\">
&nbsp;&nbsp;Avatar l&ouml;schen
</td>
</tr>
<tr>
<td>
<center>
<table>
<tr>
<td>
Name
</td>
<td>
Gr&ouml;&szlig;e
</td>
</tr>
";

for($j=1;$j<=$num_link;$j++)
{
$fetch_link = mysql_fetch_row($link);
echo"

<tr>
<td>
" . $fetch_link[0] . "
</td>
<td>
" . $fetch_link[1] . " kB
</td>
<td>
<input type=\"button\" name=\"loeschen\" value=\"L&ouml;schen\"onClick=\"self.location.href='/main.php?seite=avatarloeschen&aid=" . $fetch_link[2] . "'\">
</td>
</tr>
";

};


echo"
</table>
</center>
</td>
</tr>
</table>
";
 
Hast du schonmal überlegt, die code oder php-Tags zu benutzen?

Also erstmal fehlt da ganz oben ein <?php und am Ende ein ?>, damit musst du alle PHP-Teile einschließen.

Dann hab ich keine Ahnung, was der PHP Code überhaupt machen soll. Du könntest das ja mal beschreiben ;). Die Fehlermeldung sieht danach aus, dass du irgendwie Windoofs-Paths auf einer Unix Kiste verwendet hast. Allerdings weis ich ja auch nicht worauf das Skript eigentlich läuft, und bei welcher Aktion überhaupt der Fehler kommt.

Um anderen den Code-Wust zu ersparen hier nochmal eine etwas lesbarere Version, die Einrückungen fehlen allerdings teilweise und ich war zu faul die dazuzusetzen.

PHP:
<?php
$path = "/host/images/avatar/" . $_SESSION['uid'] . "/"; 
$extval_use = 1; 
$extval = array("php", "php3", "asp", "html", "htm", "jsp", "cfml", "shtml"); 
$filesize_limit_use = 1; 
$filesize_limit = 400; 

$message["fileisbig"] = "Die Datei ist zu groß! (".$filesize_limit."kB) :(";
$message["invext"] = "Deine Datei hat eine falsche Endung! :(";
$message["uncomplete"] = "Upload konnte nicht erfolgreich beendet werden! :(";
$message["complete"] = "Upload erfolgreich! :)";
$message["uploadbutton"] = "Hochladen!";
$message["uploadtxt"] = "Avatar Datei: ";
$message["fileexists"] = "Datei existiert berreits! :(";


$stylesheet = "
               body  { font-color : black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
               font-size : 8pt; }
               table  { border: 1px #000000 solid; background-color: #999999; font-color : black; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;
               font-size : 8pt;}
              ";
        
     
        
        
echo"
<table style=\"width: 680px; height: 600px; background-color:#DDDDDD; border:medium solid #AAAAAA;\" cellpadding=\"0\" cellspacing=\"0\" valign=\"top\"\">
  <tr>
  <td  style=\"vertical-align:top;\">
  
<table>
<tr>
  <td style=\"width: 671px; height: 18px; background-image: url(/images/wsc_news_topic.jpg); font-family:Arial; font-size:10pt; color:#FFFFFF;\"\">
  &nbsp;&nbsp;Avatar Hochladen
  </td>

<tr>
  <td style=\"width: 671px; height: 80px; font-family:Arial; font-size:10pt; color:#000000;\"  valign=\"top\">        
";
        
        
           
if (is_dir ($path))
{
echo"
<center>
Bitte W&auml;len sie ein Bild aus, das hochgeladen werden soll!
<br>
Datei max. 400kB
<br>
Nicht m&ouml;glich mit Firefox und Opera!
</center>
";
}
else
{
mkdir("" . $path . "", 0700);
echo"
<center>
Ein Ordner f&uuml;r deine Dateien wurde erfolgreich erstellt!
<br>
Datei max. 400kB
<br>
Nicht m&ouml;glich mit Firefox und Opera!
</center>
";
};

$filename = substr(strrchr($_POST['file'],"\ "),1);

if (isset($_POST['upload']))
{

if($filesize_limit_use=1)
{
   @$filesize = filesize($_POST['file']) / 1024; // filesize in kB
   if($filesize_limit<$filesize)
   {
       echo "<font color='red'><center>".$message["fileisbig"]."</font></center>";
       exit;
   }
}

if($extval_use=1)
{
   $extget = substr(strrchr($_POST['file'],"."),1);
   for($i=0;$i<count($extval);$i++)
   {
       if($extget==$extval[$i])
       {
           echo "<font color='red'><center>".$message["invext"]."</font></center>";
           exit;
       }
   }
}

if (!file_exists($path.$filename))
{
   if(!copy($_POST['file'],$path.$filename)) 
   {
   echo "<font color='red'><center>".$message["uncomplete"]."</font></center>";
   }
   else 
   {
   mysql_query("INSERT INTO avatar SET link='" . $path . "', uid='" . $_SESSION['uid'] . "', name='" . $filename . "', groesse='" . $filesize . "'");
   echo "
   <font color='red'><center>".$message["complete"]."</font></center>
   ";
   }
}
else
{
   echo "<font color='red'><center>".$message["fileexists"]."</font></center>";
}
}



echo "
<form method='post' action='main.php?seite=avatar'>
<table frame=box rules=none border=0 cellpadding=2 cellspacing=0 align='center'>
<tr><td>".$message["uploadtxt"]."<td><input type='file' name='file'>
<tr><td><td><input type='submit' value='".$message["uploadbutton"]."' name='upload'>
</table>
</form>
";


$link = mysql_query("SELECT avatar.name, avatar.groesse, avatar.aid FROM avatar WHERE avatar.uid='" . $_SESSION['uid'] . "'");

$num_link = mysql_num_rows($link);


echo"
  </td>
<tr>
  <td style=\"width: 671px; height: 18px; background-image: url(/images/wsc_news_topic.jpg); font-family:Arial; font-size:10pt; color:#FFFFFF;\"\" colspan=\"2\">
&nbsp;&nbsp;Avatar l&ouml;schen   
  </td>
</tr>
<tr>
  <td>
  <center>
  <table>
      <tr>
      <td>
        Name
      </td>
      <td>
        Gr&ouml;&szlig;e
      </td>
    </tr>
";

for($j=1;$j<=$num_link;$j++)
{
$fetch_link = mysql_fetch_row($link);
echo"

    <tr>
      <td>
      " . $fetch_link[0] . "
      </td>
      <td>
      " . $fetch_link[1] . " kB
      </td>
      <td>
      <input type=\"button\" name=\"loeschen\" value=\"L&ouml;schen\"onClick=\"self.location.href='/main.php?seite=avatarloeschen&aid=" . $fetch_link[2] . "'\">
      </td>
    </tr>
";

};


echo"
 </table>
 </center>
  </td>
</tr>
</table>
"
?>
 
hi!

das ganze ist in einer function.

vorher steht natürlich noch:

function avatar()
{
inhalt_von_gerade
};


mfG. recall
 
Das Problem ist, dass der Fehler praktisch immer gerade nicht da ist wo man ihn vermutet. Und wenn du ein so großes Skript hast (btw. sowas kann man in mehrere kleine Dateien splitten, viel übersichtlicher) ist die Wahrscheinlichkeit, dass irgendwas anderes entweder zum Fehler oder der Lösung beiträgt, oder selbst den Fehler verursacht, einfach ziemlich groß.

Desswegen: Schreib doch endlich mal was überhaupt gemacht werden soll, worauf das ganze läuft und wobei der Fehler eigentlich autritt (zB. welche Eingabewerte).
 
hi @ all!

das script dient dazu eine avatar datei für den gerade angemeldeten user hochzuladen.

das was beim fehler in den klammern steht ist der pfad, der datei, die ich hochladen will:
---
copy(H:\\Daten\\Wallpaper\\Girls (klein)\\13.jpg): failed to open stream: No such file or directory
---

auf meiner testumgebung hatte das alles wunderbar funktioniert (neuester xampp).
aber auf dem neuen server will das ganze dann nicht mehr. dahabe ich php 4.?? und nen apache 1.3 (glaube ich).

mfG. recall
 
@ ernie.23

in den zeihlen steht folgendes:

------
if (!file_exists($path.$filename))
{
------

schade, dass planet3dnow keine zeilenangabe hat.

mfG. recall
 
Das kann ja so auch nicht funktionieren!

Eine Datei hochladen geht völlig anders - dazu musst du ein entsprechendes Widget (also Eingabefeld) in den HTML Code packen, das wirklich nur für Uploads ist. Dann ließt der Browser das von der HDD und schickt den Inhalt per POST an das PHP Skript. Zugreifen kannst du dann per $_POST['widgetname'].

Mit copy kommst du da net ran, das PHP Skript läuft ja auf dem Server und nicht auf dem Client.

Du sieht, der Fehler liegt garnicht in dem von dir geposteten PHP-Code.
 
Recall schrieb:
schade, dass planet3dnow keine zeilenangabe hat.

Wenn du den kompletten Code posten würdest, könnte man den notfalls selber in einen Editor übernehmen und nachschauen. Sinnvoller ist es natürlich, wenn du die Fehlermeldung schon selber so weit auseinander nimmst, und dich dann hier auf die entsprechenden stellen konzentrierst.
 
ich möchte aber den ganzen code nicht posten, außerdem sinds um die 8000 zeilen.

werde das mit dem feld mal testen.

danke euch!

mfG. recall
 
Recall schrieb:
ich möchte aber den ganzen code nicht posten, außerdem sinds um die 8000 zeilen.

Dann musst du halt zusehen, dass du uns die notwendigen Informationen lieferst. Bei deinem ersten Post war das offensichtlich nicht der Fall. ;)
 
Recall must schon ein bisschen an den denken der das ganze "debuggen" soll.
Weil ehrlich gesagt fehlt mir sehr die Lust(und Zeit) mich in fremde Sachen reinzudenken...
 
Zurück
Oben Unten