Failed to open stream: Permission denied

Résolu
mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   -  
mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Membre Dernière intervention   > mont_dani Messages postés 232 Date d'inscription   Statut Membre Dernière intervention  
 
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