OVH Community, your new community space.

Upload Fehler "[function.copy]: failed to open stream"


suri
13.07.10, 17:02
Danke für die schnelle Hilfe,
ich habs jetzt endlich (grrr) mit "move_uploaded_file()"; - vielen Dank.
http://www.php-einfach.de/tuts_php_datei_upload.php

Etwas das mich unglaulich ärgert ist, dass die Hochgeladenen Bilder (noch) nicht im FTP erscheinen ... dadurch hat sich das Ganze noch mehr verzögert.

Gibt es dafür einen speziellen Grund?
Es kann doch nicht sein, dass 7 Minuten nach dem Hochladen die Datei immer noch nicht per FTP sichtbar ist - was geht denn dar vor sich?!
Die Datei ist auf vie HTTP doch erreichbar - warum sehe ich sie nicht via FTP?

UPDATE:
Endlich ist es sichtbar!
11 Minuten danach!
... ich versteh es nicht ...
Was soll das?


MfG
suri

EvilMoe
06.07.10, 20:13
Zum kopieren gibt es eine besondere Funktionen bei Uploads. "move_uploaded_file()";


Benutzt du "pathinfo" nicht falsch? Muss dort nicht die Datei angeben werden und nicht nur den Dateinamen? Aus dem Dateinamen kann PHP doch nicht wissen wo die Datei gespeichert ist oder liege ich da falsch?

Mache folgendes:
$path_parts = pathinfo($file);
// einfügen, den Inhalt kontrollieren ob dort alles richtig ist
var_dump($path_parts);

PS: Tausche mal "$HTTP_POST_FILES" gegen "$_FILES" aus.
Existiert dein Upload Ordner ""media/upload/"? Dort genug Rechte vorhanden?

suri
06.07.10, 19:27
Hallo,
ich habe ein kleines Problem:
Ich brauche ein kleines Bilder-Upload Skript in PHP
ich habe auch schon mehrere gefunden, nur es taucht jedes mal der Fehler auf:
Warning: copy(media/upload/test_1278439952.gif) [function.copy]: failed to open stream: No such file or directory in /homez.332/NUTZERNAME/www/media/upload.php on line 19
bzw beim 2. Skript:
Warning: copy(images/1278440058.gif) [function.copy]: failed to open stream: No such file or directory in /homez.332/XXX/NUTZERNAME/media/upload2.php on line 58

Mein Schluss daraus war, dass entweder
A. Die Dateien nicht genug Rechte haben - was ich nicht ändern kann da sonst Internal Error kommt
B. die Funktion copy() nicht unterstützt wird ... kennt ihr da eine Alternative?

PS: Über Wordpress kann ich Problemlos Bilder hochladen...
Mein Hostingpaket ist das Shared Hosting Basic
http://www.ovh.de/shared_hosting/sha...ffic_500gb.xml

Vielen Dank im voraus!

Beste Grüße
Suri

Skript 1
PHP-Code:


Upload

if($action){
$path "media/upload/"// Url zum Speicher Ordner
$filename "";
$deindomain "http://RICHTIGE-DOMAIN.de/";
$time=time();
if (
$HTTP_POST_FILES['userfile']['tmp_name']<> 'none')
   {   
         
$file $HTTP_POST_FILES['userfile']['name'];
         
$temp $HTTP_POST_FILES['userfile']['tmp_name'];
         
$path_parts pathinfo($file);
         
$filename "test_" $time "." $path_parts["extension"];
         
$dest $path.$filename;
   
         
copy($temp$dest);
   
      echo 
"Die Datei ist auf dem Server! 

"
;
      echo 
"Url der Datei: $deindomain$path$filename\" target=\"_blank\">".$deindomain.$path.$filename;
     echo 
"";
   }
} else { 
?>

echo $PHP_SELF ?>">



File Upload 









?>
// alt
PHP-Code:
//define a maxim size for the uploaded images in Kb
 
define ("MAX_SIZE","100"); 

//This function reads the extension of the file. It is used to determine if the file  is an image by checking the extension.
 
function getExtension($str) {
         
$i strrpos($str,".");
         if (!
$i) { return ""; }
         
$l strlen($str) - $i;
         
$ext substr($str,$i+1,$l);
         return 
$ext;
 }

//This variable is used as a flag. The value is initialized with 0 (meaning no error  found)  
//and it will be changed to 1 if an errro occures.  
//If the error occures the file will not be uploaded.
 
$errors=0;
//checks if the form has been submitted
 
if(isset($_POST['Submit'])) 
 {
     
//reads the name of the file the user submitted for uploading
     
$image=$_FILES['image']['name'];
     
//if it is not empty
     
if ($image
     {
     
//get the original name of the file from the clients machine
         
$filename stripslashes($_FILES['image']['name']);
     
//get the extension of the file in a lower case format
          
$extension getExtension($filename);
         
$extension strtolower($extension);
     
//if it is not a known extension, we will suppose it is an error and will not  upload the file,  
    //otherwise we will do more tests
 
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
         {
        
//print error message
             
echo '

Unknown extension!

'
;
             
$errors=1;
         }
         else
         {
//get the size of the image in bytes
 //$_FILES['image']['tmp_name'] is the temporary filename of the file
 //in which the uploaded file was stored on the server
 
$size=filesize($_FILES['image']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger
if ($size MAX_SIZE*1024)
{
    echo 
'

You have exceeded the size limit!

'
;
    
$errors=1;
}

//we will give an unique name, for example the time in unix time format
$image_name=time().'.'.$extension;
//the new name will be containing the full path where will be stored (images folder)
$newname="images/".$image_name;
//we verify if the image has been uploaded, and print error instead
$copied copy($_FILES['image']['tmp_name'], $newname);
if (!
$copied
{
    echo 
'

Copy unsuccessfull!

'
;
    
$errors=1;
}}}}

//If no errors registred, print the success message
 
if(isset($_POST['Submit']) && !$errors
 {
     echo 
"

File Uploaded Successfully! Try again!

"
;
 }

 
?>