Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arrêt d'execution d'une page sans raison...

... alors que toutes les erreurs sont traités... oO

Sujet résolu
    17 juin 2009 à 10:19:59

    Bonjour, j'ai un gros probleme, je doit mettre en place une galerie pour un client, il y a aucun soucis elle fonctionne parfaitement en local ! :D
    Je reçois les identifiants sql, je modifie le script etc... j'upload et la SURPRISE... alors qu'il est censé récupérer l'image mis dans le formulaire, le commentaire s'il y en a un, traiter l'image, la miniaturiser, deplacer, etc... il m'affiche une page blanche avec juste le fond... même pas le menu... RIEN ! :oo_O

    Petite explication rapide du code :
    - On vérifie si l'utilisateur est connecte
    - On vérifie que le nombre de photos max n'est pas atteint,
    - Si on a pas poste on affiche le formulaire d'envoi
    - sinon on traite la photo et le commentaire (redimensionnement, deplacement, enregistrement dans la table, etc..)

    <?php
    	session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>****</title>
    <meta http-equiv="Content-Language" content="fr"/>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
    <link type="text/css" rel="stylesheet" media="screen" href="../style.css"/>
    <!-- Je vous epargne le Css -->
    </head>
    <body>
    <div id="site">
    <div id="header">
    	<img align="left" alt="" src="../images/header-a.jpg"/>
    </div>
    <div id="menu">
    <ul>
    	<li class="index"><a title="accueil" href="../index.html">Accueil</a></li>
    	<li class="act"><a title="activites" href="../activites.html">Activités</a>
    	<li class="ref" ><a title="references" href="../references.html">Références</a></li>
    	<li class="part" ><a title="partenaires" href="../partenaires.html">Nos Partenaires</a></li>
    	<li class="contact" ><a title="contacts" href="../contact.html">Contact</a></li>
    	<li class="btn_galerie"><a title="galerie" href="../galerie.php">Galerie</a></li>
    </ul>
    </div>
    <br /><br /><br />
    <?php
    if (isset($_SESSION['co']))
    {
    	if ($_SESSION['co'] == 1)
    	{
    	
    		include('config.php');
    	
    	
    		//On compte les entrées de la table pour verifier si la limite est atteinte.
    		$req_compt = mysql_query("SELECT COUNT(*) as nbre_photo FROM photo") or die (mysql_error());
    		$rep = mysql_fetch_array($req_compt);
    		
    		if ($rep['nbre_photo'] > 30)
    		{
    			echo 'La limite de 30 photos à été atteinte. Vous ne pouvez plus en ajouter.<br />
    			<a href="index.php">Retour</a>';
    		}
    		else
    		{
    
    			if(!isset($_POST['envoi']))
    			{
    				echo '
    				<fieldset>
    				<legend>Envoi d\'une photo</legend>
    				<form name="form" action="upload.php" method="post" ENCTYPE="multipart/form-data">
    				<input type="file" name="img" />
    				<input type="hidden" name="envoi" /><br />
    				</fieldset>
    				<fieldset>
    				<legend>Commentaire (facultatif). Max. 100 caracteres</legend>
    					<textarea onkeyup="document.form.long.value=this.value.length" cols="50" rows="3" name="com"></textarea>
    					<br />Nombres de caractères : <input type="text" name="long" size="1" disabled=true />
    				<input type="submit" value="Enregistrer" />
    				</form>
    				</fieldset>
    				';
    			}
    			else
    			{
    
    
    				if ($_POST['com'] == null)
    				{
    					$nb_car = 0;
    				}
    				else
    				{
    					$com = mysql_real_escape_string($_POST['com']);
    					$com = addcslashes($com, '%_');
    					$nb_car = strlen($com);
    				}
    				
    				if ($nb_car > 100)
    				{
    					echo 'Erreur ! Le commentaire contient plus de 100 caractères (' . $nb_car . ' caractères). <a href="upload.php">Recommencer</a>';
    				}
    				else
    				{
    					if(!empty($_FILES['img']['size'])) //Si l'img n'est pas vide...
    					{
    
    						$extension_valides = array ("jpg","jpeg","gif","png","bmp");
    						
    						if ($_FILES['img']['error'] > 0 ) //Si une erreur apparait
    						{
    							echo 'Une erreur est survenue lors du transfert de l\'image !<br />
    							<a href="index.php">Reessayer</a>';
    						}
    						
    						$minuscule = strtolower($_FILES['img']['name']); //converti en minuscule la chaine
    						$var = strrchr($minuscule, "."); //Recuperation de la chaine apres le "."
    						$var2 = substr($var, 1); //Extraction de chaine sans le "."
    
    						
    						if (!in_array($var2, $extension_valides))
    						{
    							echo 'Extension incorrect ! Ceci n\'est pas une image !';
    						}
    						else
    						{
    							
    							$req = mysql_query("SELECT id FROM photo ORDER BY id DESC LIMIT 0, 1");
    							$data = mysql_fetch_array($req);
    							
    							$new_id = $data['id'] + 1;
    							$com = mysql_real_escape_string($_POST['com']);
    							$com = addcslashes($com, '%_');
    							
    							//Redimensionnement de l'image pr prendre moin de place
    							include ('fction_redim.php');
    							$image = $_FILES['img']['tmp_name']; //Adresse local de l'img
    							$destination = '../img/' . $new_id . '.' . $var2 . ''; //Adresse destination
    							$larg = 700;
    							$haut = 500;
    							$redim = redimage($image, $destination, $larg, $haut);
    							
    							
    							mysql_query("INSERT INTO photo VALUES('','" . $new_id . "." . $var2 . "', '" . $com . "')");
    							
    							/* 
    							//////////////////////////////
    							//////Miniaturisation/////////
    							//////////////////////////////
    							*/
    							
    							$image = '../img/' . $new_id . '.' . $var2 . '';
    							$destination = '../img/mini/' . $new_id . '.' . $var2 . '';
    							$larg = 100;
    							$haut = 100;
    							$redim = redimage($image, $destination, $larg, $haut);
    							
    
    							echo '<strong>Transfert établi !</strong><br /><br />
    							<a href="upload.php">Charger une autre</a> - 
    							<a href="index.php">Retour à l\'index</a>
    							';
    						}
    					}
    					else
    					{
    						echo 'Problême lors du transfert : Fichier image abîmé impossible à traiter.<br />
    						<a href="upload.php">Rééssayer</a>
    						';
    					}
    				}
    			}
    		}
    		mysql_close();
    	}
    	else
    	{
    		echo 'Vous n\'êtes pas connecté ! Vous n\'avez pas l\'autorisation d\'accedez à cette page !<br />
    		<a href="index.php">Se connecter</a>';
    	}
    }
    else
    {
    	echo 'Vous n\'êtes pas connecté ! Vous n\'avez pas l\'autorisation d\'accedez à cette page !<br />
    	<a href="index.php">Se connecter</a>';
    }
    
    ?>
    </div>
    <div id="footer">
    </div>
    </div>
    </body></html>
    


    ... le plus frustrant c'est qu'en local ça marche super donc je sais pas ce qui se passe... :'(
    Help me plz, je reste à disposition à tous moment si vous avez des questions.

    ps : l'hebergement est chez Vialis (calixo)
    • Partager sur Facebook
    • Partager sur Twitter
      17 juin 2009 à 11:35:14

      Bonjour,

      Regarde dans le log du serveur quelles sont les erreurs, s'il n'y a pas de log, ajoute en un avec ces lignes au début de ton fichier:
      <?php 
      error_reporting (E_ALL | E_STRICT);
      ini_set('log_errors', true);
      ini_set('error_log', 'error.log'); 
      ?>
      


      Sinon tu dois pouvoir forcer l'affichage des erreurs php en ajoutant ces lignes dans ton .htaccess:
      php_value error_reporting 2147483647
      php_flag display_errors on
      php_flag display_startup_errors on

      • Partager sur Facebook
      • Partager sur Twitter
        17 juin 2009 à 11:50:32

        Citation

        [17-Jun-2009 11:48:08] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 10368 bytes) in /***/fction_redim.php on line 35



        Voila la fonction qui permet de redimensionner...

        <?php
        function redimage($img_src,$img_dest,$dst_w,$dst_h) {
           // Lit les dimensions de l'image
           $size = GetImageSize($img_src);  
           $src_w = $size[0]; $src_h = $size[1];  
           // Teste les dimensions tenant dans la zone
           $test_h = round(($dst_w / $src_w) * $src_h);
           $test_w = round(($dst_h / $src_h) * $src_w);
           // Si Height final non précisé (0)
           if(!$dst_h) $dst_h = $test_h;
           // Sinon si Width final non précisé (0)
           elseif(!$dst_w) $dst_w = $test_w;
           // Sinon teste quel redimensionnement tient dans la zone
           elseif($test_h>$dst_h) $dst_w = $test_w;
           else $dst_h = $test_h;
        
           // La vignette existe ?
           $test = (file_exists($img_dest));
           // L'original a été modifié ?
           if($test)
              $test = (filemtime($img_dest)>filemtime($img_src));
           // Les dimensions de la vignette sont correctes ?
           if($test) {
              $size2 = GetImageSize($img_dest);
              $test = ($size2[0]==$dst_w);
              $test = ($size2[1]==$dst_h);
           }
        
           // Créer la vignette ?
           if(!$test) {
              // Crée une image vierge aux bonnes dimensions
              // $dst_im = ImageCreate($dst_w,$dst_h);
              $dst_im = ImageCreateTrueColor($dst_w,$dst_h); 
              // Copie dedans l'image initiale redimensionnée
              $src_im = ImageCreateFromJpeg($img_src);
              // ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
              ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
              // Sauve la nouvelle image
              ImageJpeg($dst_im,$img_dest);
              // Détruis les tampons
              ImageDestroy($dst_im);  
              ImageDestroy($src_im);
           }
          }
        ?>
        


        C'est parce que ca prend trop de ressource que ça bloque ?..
        • Partager sur Facebook
        • Partager sur Twitter
          17 juin 2009 à 12:26:39

          Citation : Nunu68

          C'est parce que ca prend trop de ressource que ça bloque ?..


          Oui.

          Peut-être qu'ImageMagick est installé sur le serveur, il est censé prendre moins de mémoire. Essaye avec un truc comme ça::
          <?php
          exec("/usr/bin/convert -geometry ".$dst_w."x".$dst_h." $img_src $img_dst");
          ?>
          
          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2009 à 14:15:09

            Tu est mon héros !!! :ange:

            ça marche merki beaucoup ;)

            Bonne continuation à vous. Tchou
            • Partager sur Facebook
            • Partager sur Twitter

            Arrêt d'execution d'une page sans raison...

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown