Failed to open stream: Permission denied
Résolu
mont_dani
Messages postés
249
Statut
Membre
-
mont_dani Messages postés 249 Statut Membre -
mont_dani Messages postés 249 Statut Membre -
Bonjour
J'utilise "copy" dsns un fichier ou je n'ai pas d'erreur
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
Peut-etre que je n'utilise pas correctement le chmod? ou autre chose?
Merci pour votre aide.
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
-
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 ...
-
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.- 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 - 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?
-