[Permission denied] Vista et dossier en CHMOD 777

Mammouth du PHP | 965 Messages

25 oct. 2007, 11:49

Voila lorsque je tente une upload sur un dossier en CHMOD 777 (sous vista par le clic droit sur dossier -> tout le monde -> tout les droits) ensutie j'execute ce script :
<?php
		//mise à jour des données	
		$update = sprintf("UPDATE programme SET Nom='%s', Cp='%s', Adresse='%s', Ville='%s', Id_region='%s', Date_comm='%s', Date_livraison='%s', Date_signature='%s', Presentation='%s', Id_fiscalite='%s' WHERE Id=%s", $nom,$cp,$adresse,$ville,$region,$dt_comm,$dt_livraison,$dt_signature,$presentation,$fiscalite,$idProg);
		if(mysql_query($update)){
			echo '<span class="traitement">mise à jour des données simples réussie</span><br>';
		}else{
			echo '<span class="traitement">erreur lors de la mise à jour des données simples</span><br>';
			exit;
		}
		
		// traitement des photos		
		for($i=0;$i<count($_FILES['Photo']);$i++){
			if($Photo[$i]){
				//suppression si photo existante
				if(file_exists('../../_medias/img/upload/programme/'.$sqldata['photo_'.$i])){
					chmod('../../_medias/img/upload/programme/'.$sqldata['photo_'.$i], 0777);
					unlink('../../_medias/img/upload/programme/'.$sqldata['photo_'.$i]);
				}
				
				if(file_exists('../../_medias/img/upload/programme/miniature/m_'.$sqldata['photo_'.$i])){
					chmod('../../_medias/img/upload/programme/miniature/m_'.$sqldata['photo_'.$i], 0777);
					unlink('../../_medias/img/upload/programme/miniature/m_'.$sqldata['photo_'.$i]);
				}
				
				//traitement de la photo
				$NewFichier_name = sprintf("photo%s_%s.jpg", $idProg, $i);
				$Destination = "../../_medias/img/upload/programme/".$NewFichier_name;								
				if(move_uploaded_file($PhotoTmp[$i], $Destination)) {
					echo "<span class='traitement'>copie de l'image ".($i+1)." réussie</span><br>";	
					chmod(($Destination), 0777);
					$TauxCompression = 75;
					$HauteurMax = 49;
					$LargeurMax = 83;
					$Source = "../../_medias/img/upload/programme/";
					$Destination = "../../_medias/img/upload/programme/miniature/";
					$Prefixe = "m_";					
					reduit_fichier($NewFichier_name,$TauxCompression,$HauteurMax,$LargeurMax,$Source,$Destination,$Prefixe);
					
					$TauxCompression = 75;
					$HauteurMax = 223;
					$LargeurMax = 369;
					$Destination = "../../_medias/img/upload/programme/";
					$Prefixe = "";
					reduit_fichier($NewFichier_name,$TauxCompression,$HauteurMax,$LargeurMax,$Source,$Destination,$Prefixe);
					
					//insertion des données photo
					$query = "UPDATE programme SET photo_".$i."='".$NewFichier_name."' WHERE id=".$idProg;    
			
					if(!mysql_query($query)){
						echo "<span class='traitement'>erreur de l'enregistrement de l'image ".($i+1)." en base de données</span><br>";
						exit;
					}
				}else{
					echo "<span class='traitement'>erreur dans la copie de l'image ".($i+1)."</span><br>";
					exit;
				}					
			}
		}
		
		echo "<br><span class='traitement'>Création du programme réalisée avec succès</span><br>";
			
		?>
Et une fois que le script est executé il me retourne :
Traitement en cours, veuillez patienter...

mise à jour des données simples réussie

Warning: unlink(../../_medias/img/upload/programme/) [function.unlink]: Permission denied in ***a_prog_modif_do.php on line 65
copie de l'image 1 réussie

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in ***functions.php on line 63

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '../../_medias/img/upload/programme/photo2_0.jpg' is not a valid JPEG file in ***functions.php on line 63

Warning: imagesy(): supplied argument is not a valid Image resource in ***functions.php on line 64

Warning: imagesx(): supplied argument is not a valid Image resource in ***functions.php on line 65

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in ***functions.php on line 89

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in ***functions.php on line 90

Warning: imagejpeg(): supplied argument is not a valid Image resource in ***functions.php on line 91

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in ***functions.php on line 63

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '../../_medias/img/upload/programme/photo2_0.jpg' is not a valid JPEG file in ***functions.php on line 63

Warning: imagesy(): supplied argument is not a valid Image resource in ***functions.php on line 64

Warning: imagesx(): supplied argument is not a valid Image resource in ***functions.php on line 65

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in ***functions.php on line 89

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in ***functions.php on line 90

Warning: imagejpeg(): supplied argument is not a valid Image resource in ***functions.php on line 91

Création du programme réalisée avec succès

ViPHP
ViPHP | 2287 Messages

25 oct. 2007, 12:03

Comme l'indique le premier warning, tu as des éléments vides dans ton tableau $sqldata. (l'entrée du tableau existe mais se transforme en chaîne vide). Ce qui fait que php essaye d'appliquer l' unlink() au répertoire, ce qui ne peut pas fonctionner.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 965 Messages

25 oct. 2007, 12:09

Ok j'ai reparer l'erreur du unlink en ayant des mauvais nom envoyé par le formulaire.

Maintenant que c'est fait il me retourne l'erreur suivante :
warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in
bref il recupere pas les noms des photo car avec un test en :
if (!file_exists($_FILES['Photo'])){echo "image inexistante";}
j'ai aussi tester avec le ['name'] et ['tm_name']

Il me retourne que le fichier est inexistant et donc ne passe pas par le formulaire

au niveau du formualire envoyé ca donne :
<input type="file" name="Photo[]" maxlength="255" size="55" tabindex="11">
Pour chaque photo c'est le même nom de fichier.

une idée ?

Mammouth du PHP | 965 Messages

25 oct. 2007, 12:17

En fait c'est une page appeler dans une iframe

quand je passe les données en POST depuis la page en iframe vers le formulaire qui effecture la requete sur l'image il me retourne une erreur et lorsque je charge juste la page sans l'iframe j'ai l'impression que les données ne passe pas en POST.

ViPHP
ViPHP | 2144 Messages

25 oct. 2007, 12:20

Un petit print_r($_POST) pour voir ce qui est effectivement retourné ?

ViPHP
ViPHP | 2287 Messages

25 oct. 2007, 12:22

On pourrait mieux te répondre si tu nous donnais le code de functions.php :o
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 oct. 2007, 12:28

Et une petite vérification de l'enctype du formulaire pour permettre l'upload de fichier ?

A voir également un print_r($_FILES) parce que $_FILES['Photo'] est un tableau d'images uploadées avec le même nom (puisque tu as collé des crochets dans le nom de l'input). Il te faut probablement utiliser $_FILES['Photo'][0]['tmp_name'] pour accéder au premier fichier...

D'ailleurs à ce sujet file_exists($_FILES['Photo']) n'a aucun sens.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 965 Messages

25 oct. 2007, 12:34

Et une petite vérification de l'enctype du formulaire pour permettre l'upload de fichier ?

A voir également un print_r($_FILES) parce que $_FILES['Photo'] est un tableau d'images uploadées avec le même nom (puisque tu as collé des crochets dans le nom de l'input). Il te faut probablement utiliser $_FILES['Photo'][0]['tmp_name'] pour accéder au premier fichier...

D'ailleurs à ce sujet file_exists($_FILES['Photo']) n'a aucun sens.
Pour l'ENCTYPE c'est :
ENCTYPE="MULTIPART/FORM-DATA"
pour l'upload c'est :
// fonction qui reduit une image a partir d un fichier et l enregistre dans un ti_fichier 
// Nom du fichier, tx de compression, Taille hauteur max, Taille largeur Max, rep source, rep de destination, prefixe a mettre
function reduit_fichier($fichier_image,$scale,$max_v,$max_h,$source,$destination,$prefixe) 
{ 
    // MAX_V = HAUTEUR -- MAX_H = LARGEUR
    // le nom de l'image "scal e" commencera par ti_ et le nom du fichier original 
    $ti_fichier_image=$prefixe.$fichier_image; 
    global $nomfichier;

	//echo "$source"."$fichier_image";	
    $im=ImageCreateFromJPEG("$source"."$fichier_image"); 
    $v=ImageSY($im); // $v prend la hauteur
    $h=ImageSX($im); // $h prend la largeur
    //Floor Arrondi  l'entier inf rieur
    
    //ON GERE LA HAUTEUR
    if ($v > $max_v) // Si la hauteur Img, est plus grand que le max, on reduit
    {
        $taux_hauteur=$v/$max_v;    // On recupere le taux necessaire pour retrecir
        $ti_v=(int)floor($max_v); // ti_v = taille final de la hauteur
        $ti_h=(int)floor($h/$taux_hauteur); // ti_h = taille final de la largeur
    }
    else $ti_v=$v; // Sinon on fixe la hauteur

    // Si il n'a pas deja subbit une modification de la taille
    if ($ti_h!="") $h_comp = $ti_h; else $h_comp = $h;
    if ($ti_v!="") $v_comp = $ti_v; else $v_comp = $v;

    //ON GERE LA LARGEUR
    if ($h_comp > $max_h)
    {
        $taux_largeur=$h_comp/$max_h; 
        $ti_h=(int)floor($max_h);
        $ti_v=(int)floor($v_comp/$taux_largeur); 
    }
    else $ti_h=$h_comp;
    $ti_im = ImageCreateTrueColor($ti_h,$ti_v); 
    imagecopyresampled ($ti_im,$im,0,0,0,0,$ti_h,$ti_v,$h,$v); 
    imagejpeg($ti_im,"$destination"."$ti_fichier_image",$scale); 
    $nomfichier = $destination.$ti_fichier_image;
		
		return true;
}
Ps : Ryle j'ai tenter avec le $_FILES['Photo']['name'] et $_FILES['Photo']['tmp_name'] avant de tester avec $_FILES['Photo'], effectivement le photo seul n'as aucun sens.

le print_r($_FILES) retourne bien les noms des ficihers ...

Mammouth du PHP | 965 Messages

25 oct. 2007, 13:00

Bon la fonction ne passe pas en fait les gif mais seulement les jpg

je pouvais toujours essayer en vain de lui envoyer des autres extensions :roll:

bon la prochaine fois je ferais au moins attention aux fonctions que j'utilise
:afraid: