Failed to open stream: Permission denied

Résolu/Fermé
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 19 mars 2021 à 19:02
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 - 23 mars 2021 à 13:12
Bonjour

J'utilise "copy" dsns un fichier ou je n'ai pas d'erreur
<?php 
setlocale (LC_TIME, 'fr_FR.utf8','fra'); 



$datetime = date("Ymd");
$date_lettre = strftime(" %d %B %Y");
$photo_origine = "images/origine/" . $datetime . ".jpg";
$photo_cible_1 = "images/albums/album1/" . $datetime . ".jpg";
$photo_cible_2 = "images/albums/album1/thumbs/" . $datetime . ".jpg";
$archive_texte =("texte/");
$liste_photo =("texte/liste_photo.txt");




if(!is_file($liste_photo)) // si le fichier exist
{
        $verif=@fopen($liste_photo,"w+");
}
else
{	
}

if (file_exists($photo_origine)) {// si la photo existe
		rename ($photo_origine ,$photo_cible_1 );
		copy( $photo_cible_1 , $photo_cible_2 );

// Si ok on ouvre en écirtureç-enregistrement du fichier liste_photo.txt
        $verif=@fopen($liste_photo,"r+");
               
        // On analyse les anciennes données et on les stock
		$stock=@fread($verif,filesize($liste_photo));
		
		$opinion="<div class=content><div><a href=#><img src=".$photo_cible_1." alt=".$date_lettre." class=thumb /></a><span></span></div></div>\n";
		
				
 

		// On remet le curseur du fichier en début de ligne
        rewind($verif);
       
        // On insère le nouveau commentaire
        fputs($verif,$opinion." \n".$stock);
       
        // On clore le fichier
        fclose($verif);
       
        // On affiche le tout
        //readfile($commentaires);
		
		$temoin = file_get_contents('texte/liste_photo.txt');
		

$temoin= str_replace('=content','="content"', $temoin ) ;
$temoin= str_replace('href=#','href="#"', $temoin ) ;

$temoin= str_replace('=thumb','="thumb"', $temoin ) ;

$result=file_put_contents('texte/liste_photo.txt',$temoin);

}

 
else {}


?>




J'ai une ereur Warning: copy(images/albums/album1/20210333-a.jpg ): failed to open stream: Permission denied in C:\wamp64\www\lenergie-vive\lev\pj\new-4.php on line 42 dons ce fichier php ou j'utilise aussi "copy".
J'ai regardé sur le web ou j'ai vu qu'il falit donner les droit avec chmod.
Mais cela ne fonctionne pas


<?php 
//$datetime = date("Ymd");
$datetime= ("20210333");
$date_lettre = strftime(" %d %B %Y"); //pour le titre image

$archive_texte =("texte/");
$liste_photo =("texte/liste_photo.txt");

$photo_origine = "images/origine/" . $datetime . "**.jpg";

// extraire les fichiers qui contienne la variable
foreach(glob("images/origine/".$datetime."**.jpg") as $file){
}
//extraire le nom du fichier
$archive = basename($file);

if (fnmatch("*[a-]*",$archive)) // si le fichier contient a-
{ 
   $credit= "facebook";
   echo "credit<br>" .$credit."<br />";
   //$new_archive= str_replace("a-","",$archive); //remplace ce caractere par rien
   //echo "new archive<br>" .$new_archive."<br />";
	//rename("images/origine/a-20210333.jpg","images/origine/20210333.jpg");
}
else
{ 
   echo "erreur"; 
} 



//$photo_origine = "images/origine/" . $file . ";
echo "<br>photo origine  <br>  " .$photo_origine;
$photo_complet= "images/origine/".$archive."";
echo "<br>photo complet  <br>  " .$photo_complet;
$photo_cible_1 = "images/albums/album1/" . $archive . " ";
echo "<br>photo cible 1  <br>  " .$photo_cible_1;
$photo_cible_2 = "images/albums/album1/thumbs/" . $archive . " ";
echo "<br>photo cible 2  <br>  " .$photo_cible_2;
if (file_exists($photo_complet)) {// si la photo existe
chmod ( $photo_complet , 0777 );
copy( $photo_complet , $photo_cible_1 );
copy( $photo_complet , $photo_cible_2 );
}
else{
}


?> 


Peut-etre que je n'utilise pas correctement le chmod? ou autre chose?

Merci pour votre aide.

2 réponses

jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
19 mars 2021 à 20:11
Bonjour,


Pour commencer ... tu as fermé ton foreach trop tot ..
foreach(glob("images/origine/".$datetime."**.jpg") as $file){
}

En l'état .. il ne sert à rien...
Je suppose que le reste du code devrait se trouver dans ce foreach ...


0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
19 mars 2021 à 20:32
Il me sert a obtenir le nom du fichier que j'ai au format "date du jour-lettre" (20210319-a/b/c...) et de pouvoir faire le traitement sur la lettre.

Incluir ou non le reste du code dans foreach ne change pas le problème.
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
19 mars 2021 à 20:46
Une boucle dans laquelle tu ne fais rien ne sert strictement à rien...
je reste persuadé que tu as fermer ta boucle trop tôt...
et pour le vérifier il te suffit de faire des échos de tes différentes variables de ton script...
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
20 mars 2021 à 09:23
Comme tu verras dans le script, j'ai fais les echo et tous les echo me renvoi le non et emplacement correct du fichier.

credit
facebook

photo origine
images/origine/20210333**.jpg
photo complet
images/origine/20210333-a.jpg
photo cible 1
images/albums/album1/20210333-a.jpg
photo cible 2
images/albums/album1/thumbs/20210333-a.jpg
0
mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024 > mont_dani Messages postés 232 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 7 mai 2024
20 mars 2021 à 09:45
J'ai essayer de changer de place l'accolade de fin du foreach mais cela ne change rien.

Le foreach me sert a obtenir le nom complet de mon fichier
foreach( glob("images/origine/".$datetime."**.jpg") as $file){
//extraire le nom du fichier
$archive = basename($file);}

Existe-t il une autre methode pour extraire le nom complet du fichier?
0