2010-06-01 5 views
1

En utilisant ce script de téléchargement et il fonctionnait bien il ya une semaine, mais quand je l'ai vérifié aujourd'hui, il échoue. J'ai vérifié les privilèges d'écriture sur le dossier et il est réglé sur 777, donc je ne pense pas que ce soit le problème. Quelqu'un a-t-il une idée de ce que le problème peut être?Script de téléchargement PHP

c'est l'erreur

Warning: move_uploaded_file() [function.move-uploaded-file]: 
Unable to access replays/1275389246.ruse in 
/usr/home/web/wno159003/systemio.net/ruse.systemio.net/scripts/upload.php on line 95 

mon script est

<?php 

    require($_SERVER['DOCUMENT_ROOT'].'/xxxx/xxxx'); 
    $connection = @mysql_connect($db_host, $db_user, $db_password) or die("error connecting"); 
    mysql_select_db($db_name, $connection); 

    $name = basename($_FILES['uploaded']['name']); 
    $comment = $_POST["comment"]; 
    $len = strlen($comment); 
    $username = $_POST["username"]; 
    $typekamp = $_POST["typekamp"]; 
    $date = time(); 


    $target = "replays/"; 
    $target .= basename($_FILES['uploaded']['name']); 
    $maxsize = 20971520; // 20mb Maximum size of the uploaded file in bytes 

// File extension control 
// Whilelisting takes preference over blacklisting, so if there is anything in the whilelist, the blacklist _will_ be ignored 
// Fill either array as you see fit - eg. Array("zip", "exe", "php") 
$fileextensionwhitelist = Array("ruse"); // Whilelist (allow only) 
$fileextensionblacklist = Array("zip", "exe", "php", "asp", "txt"); // Blacklist (deny) 
$ok = 1; 

if ($_FILES['uploaded']['error'] == 4) 

{ 
    echo "<html><head><title>php</title></head>"; 
    echo '<body bgcolor="#413839" text="#ffffff"> 
    <p><B>info</b></p>'; 
    die("No file was uploaded"); 
} 

if ($_FILES['uploaded']['error'] !== 0) 
{ 
    echo "<html><head><title>php</title></head>"; 
    echo '<body bgcolor="#413839" text="#ffffff"> 
    <p><B>info</b></p>'; 
    die("An unexpected upload error has occured."); 
} 

// This is our size condition 
if ($_FILES['uploaded']['size'] > $maxsize) 
{ 
    echo "<html><head><title>php</title></head>"; 
    echo '<body bgcolor="#413839" text="#ffffff"> 
    <p><B>info</b></p>'; 
    echo "Your file is too large.<br />\n"; 
    $ok = 0; 
} 

// This is our limit file type condition 
if ((!empty($fileextensionwhitelist) && !in_array(substr(strrchr($_FILES['uploaded']['name'], "."), 1), $fileextensionwhitelist)) || (empty($fileextensionwhitelist) && !empty($fileextensionblacklist) && in_array(substr(strrchr($_FILES['uploaded']['name'], "."), 1), $fileextensionblacklist))) 
{ 
    echo "<html><head><title>php</title></head>"; 
    echo '<body bgcolor="#413839" text="#ffffff"> 
    <p><B>info</b></p>'; 
    echo "This type of file has been disallowed.<br />\n"; 
    $ok = 0; 
} 

// Here we check that $ok was not set to 0 by an error 
if ($ok == 0) 
{ 
    echo "<html><head><title>php</title></head>"; 
    echo '<body bgcolor="#413839" text="#ffffff"> 
    <p><B>info</b></p>'; 
    echo "Sorry, your file was not uploaded. Refer to the errors above."; 
} 

// If everything is ok we try to upload it 
else 
{ 
    if($len > 0) 
    {  
     $target = "replays/".time().'.'."ruse"; 
     $name = time().'.'."ruse"; 
     $query = "INSERT INTO RR_upload(ID, filename, username, comment, typekamp, date) VALUES (NULL, '$name', '$username','$comment', '$typekamp' ,'$date')"; 

     if (file_exists($target)) 
     { 
     $target .= "_".time().'.'."ruse"; 
     echo "<html><head><title>php</title></head>"; 
     echo '<body bgcolor="#413839" text="#ffffff"> 
     <p><B>info</b></p>'; 
     echo "File already exists, will be uploaded as ".$target; 
     } 

     mysql_query($query, $connection) or die (mysql_error()); 

     echo "<html><head><title>php</title></head>"; 
     echo '<body bgcolor="#413839" text="#ffffff"> 
     <p><B>info</b></p>'; 
     echo (move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 

     ? "The file ".basename($_FILES['uploaded']['name'])." has been uploaded. \n" 
     : "Sorry, there was a problem uploading your file. <br>"; 
     echo "<br>Variable filename: ".$name; 
     echo "<br>Variable name: ".$username; 
     echo "<br>Variables comment: ".$comment; 
     echo "<br>Variables date: ".$date; 
     echo "<br>Var typekamp; ".$typekamp; 
     echo "<br>Var target; ".$target; 
     } 
    else 
    { 
     echo "<html><head><title>php</title></head>"; 
     echo '<body bgcolor="#413839" text="#ffffff"> 
     <p><B>info</b></p>'; 
     echo"you have to put in comment/description"; 
    } 

} 
?> 
+0

Qui l'héberge? Êtes-vous en contrôle total de l'environnement? Ou est-ce une société d'hébergement Web qui aurait pu désactiver cette fonction? – anddoutoi

+0

c'est sur un webhotel donc je n'ai pas le plein contrôle des paramètres du serveur, mais j'ai fait quelques scripts de test pour télécharger de petits fichiers images sur le même serveur et je les ai fait fonctionner très bien. – Darkmage

Répondre

1

En supposant que le répertoire "rejoue" est à la racine du document, fait l'avertissement persiste si vous remplacez cette ligne:

$target = "replays/"; 

par celui-ci:

$target = $_SERVER['DOCUMENT_ROOT']."replays/"; 

?

+0

vous avez fait ma journée :) ajouté $ _SERVER ['DOCUMENT_ROOT']. "/ Replays /"; et tout est bon – Darkmage

+1

heureux de vous aider, il souligne également le fait que nous devons faire attention à la présence du slash final dans la variable d'environnement $ _SERVER ['DOCUMENT_ROOT'] –

Questions connexes