2013-07-13 1 views
3

J'ai eu des problèmes et je me demandais si quelqu'un pouvait me donner une réponse claire. J'ai donc construit un script de téléchargement de photos en utilisant PHP/MySQL. Dans le script, les photos sont redimensionnées et reçoivent un nom temporaire lors du téléchargement. Je l'ai testé en utilisant plusieurs images (taille du fichier 220 KB | 960 x 720) et tout fonctionnait très bien. Ensuite, je tentai de télécharger plusieurs photos de mon appareil photo numérique (taille du fichier 2,47 MB ​​| 3000 x 4000) et tout d'un coup j'eu cette erreur:Photo Upload getimagesize() avertissement - le nom de fichier ne peut pas être vide

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /php_parsers/photo_system.php on line 94 

Warning: Cannot modify header information - headers already sent by (output started at /php_parsers/photo_system.php:94) in /php_parsers/photo_system.php on line 96 

J'ai vérifié stackoverflow pour un poste avec un problème similaire et est venu sur un, cependant, cela ne semblait pas s'appliquer au scénario que je vis.

Voici le code applicable à "photo_system.php". J'ai commenté les lignes offensantes 94 et 96. Toute aide/idées que vous pourriez donner serait grandement appréciée!

 <?php 
    if (isset($_FILES["photo"]["name"]) && isset($_POST["gallery"])){ 
     $sql = "SELECT COUNT(id) FROM photos WHERE user='$log_username'"; 
     $query = mysqli_query($db_conx, $sql); 
     $row = mysqli_fetch_row($query); 
     if($row[0] > 79){ 
      header("location: ../message.php?msg=The system allows only 80 pictures total"); 
      exit();  
    } 
    $gallery = preg_replace('#[^a-z 0-9,]#i', '', $_POST["gallery"]); 
    $fileName = $_FILES["photo"]["name"]; 
    $fileTmpLoc = $_FILES["photo"]["tmp_name"]; 
    $fileType = $_FILES["photo"]["type"]; 
    $fileSize = $_FILES["photo"]["size"]; 
    $fileErrorMsg = $_FILES["photo"]["error"]; 
    $kaboom = explode(".", $fileName); 
    $fileExt = end($kaboom); 
    $db_file_name = date("DMjGisY")."".rand(1000,9999).".".$fileExt; // WedFeb272120452013RAND.jpg 
    list($width, $height) = getimagesize($fileTmpLoc); //Offending Line 94 
    if($width < 10 || $height < 10){ 
     header("location: ../message.php?msg=ERROR: That image has no dimensions"); //Offending Line 96 
     exit(); 
    } 
    if($fileSize > 4194304) { 
     header("location: ../message.php?msg=ERROR: Your image file was larger than 4mb"); 
     exit(); 
    } else if (!preg_match("/\.(gif|jpg|png)$/i", $fileName)) { 
     header("location: ../message.php?msg=ERROR: Your image file was not jpg, gif or png type"); 
     exit(); 
    } else if ($fileErrorMsg == 1) { 
     header("location: ../message.php?msg=ERROR: An unknown error occurred"); 
     exit(); 
    } 
    $moveResult = move_uploaded_file($fileTmpLoc, "../user/$log_username/$db_file_name"); 
    if ($moveResult != true) { 
     header("location: ../message.php?msg=ERROR: File upload failed"); 
     exit(); 
    } 
    include_once("../php_includes/image_resize.php"); 
    $wmax = 800; 
    $hmax = 600; 
    if($width > $wmax || $height > $hmax){ 
     $target_file = "../user/$log_username/$db_file_name"; 
     $resized_file = "../user/$log_username/$db_file_name"; 
     img_resize($target_file, $resized_file, $wmax, $hmax, $fileExt); 
    } 
    $sql = "INSERT INTO photos(user, gallery, filename, uploaddate) VALUES ('$log_username','$gallery','$db_file_name',now())"; 
    $query = mysqli_query($db_conx, $sql); 
    mysqli_close($db_conx); 
    header("location: ../photos.php?u=$log_username"); 
    exit(); 
} 
?><?php 
if (isset($_POST["delete"]) && $_POST["id"] != ""){ 
    $id = preg_replace('#[^0-9]#', '', $_POST["id"]); 
    $query = mysqli_query($db_conx, "SELECT user, filename FROM photos WHERE id='$id' LIMIT 1"); 
    $row = mysqli_fetch_row($query); 
    $user = $row[0]; 
    $filename = $row[1]; 
    if($user == $log_username){ 
     $picurl = "../user/$log_username/$filename"; 
     if (file_exists($picurl)) { 
      unlink($picurl); 
      $sql = "DELETE FROM photos WHERE id='$id' LIMIT 1"; 
      $query = mysqli_query($db_conx, $sql); 
     } 
    } 
    mysqli_close($db_conx); 
    echo "deleted_ok"; 
    exit(); 
} 
?> 

Répondre

8

OK tout le monde. J'ai compris quel était le problème. J'espère que cela aidera quelqu'un dans le futur. J'ai donc vérifié mon phpinfo() et trouvé que upload_max_filesize était seulement réglé sur 2M. J'ai ajouté php.ini dans le répertoire du fichier incriminé et inclus:

upload_max_filesize = 250M 
post_max_size = 250M 
max_execution_time = 300 

date.timezone = "America/Los_Angeles" 

je devais ajouter le date.timezone parce que mon système n'a pas aimé le fait que je ne l'avais pas défini. Quoi qu'il en soit, cela a résolu le problème.

+0

Merci mon ami qui m'a aidé –

+0

Le même problème pour moi, merci! –

Questions connexes