Votre question

copy(images/bc.gif): failed to open stream: Permission denied

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
7 Juin 2006 20:43:23

Bonjour,

je voudrais envoyer un fichier image par http sur un serveur distant (en php)
j'utilise les fonctions copy() et move_uploaded_file()
mais j'obtiens le meme message :

Warning: copy(images/bc.gif): failed to open stream: Permission denied in /home/httpd/vhosts/monweb.com/subdomains/devel/httpdocs/modif_article.php on line 59


j'ai utilisé la fonction chmod(monfichier, 0777) pour changer les droits d'accès au fichier mais le problème reste le même.

une idée? une solution ?

merci

Autres pages sur : copy images gif failed open stream permission denied

a c 145 L Programmation
7 Juin 2006 20:49:35

Je crois que le soucis est surtout que tu n'arrives pas à ouvrir le fichier temporaire.
Et c'est le répertoire de destination qui doit être en 777, pas le fichier.

Au cas où, met ici ton code (de la réception du fichier jusqu'à la tentative de move)
8 Juin 2006 22:25:47

oui j'ai essayé de changer les droits du repertoire destination mais c pareil!!!

Voici le code:

Recuperation de l'image:


<form name="form" action="new_article.php" method="post" enctype="multipart/form-data">
Photo <input name="photo" type="file" size="10" maxlength="20">
...
</form>

envoi de l'image: (dans le fichier new_article.php)


// Taille maximum
$MAX_FILE_SIZE = 1000000;

// Dossier de destination du fichier
$folder = "images/";

// Tableau array des différents types
$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg");

// Variables récupérée par methode POST du formulaires
$fname = $HTTP_POST_FILES['photo']['name'];
$ftype = $HTTP_POST_FILES['photo']['type'];
$fsize = $HTTP_POST_FILES['photo']['size'];
$ftmp = $HTTP_POST_FILES['photo']['tmp_name'];

// Diverses test afin de savoir si :
// Le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}

// La taille du fichier n'est pas dépassée
if($fize > $MAX_FILE_SIZE){$error = 2;}

// Le fichier n'existe pas déjà
if(file_exists($folder."m_".$fname)){$error = 3;}

//chmod($folder, 0777); changement des droits repertoire destination

// Si tout va bien, on copie l'image
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}

...

j'ai eu à remplacer copy par move_uploaded_file() mais rien n'y fait.

Donc Voilà ...
a c 145 L Programmation
9 Juin 2006 09:28:48

bon, tout d'abord, essaye d'abandonner $HTTP_POST_FILES et d'utiliser $_FILES

Ensuite, utilise un soit vrai répertoire relatif ("./images/") soit le répertoire réel ("/home/user/www/site/images/")

Dernier point qui me choque: tu regardes si "images/m_$fichier" existe pour copier "images/$fichier" ?

Voici le script qui fonctionne chez moi:
  1. <?
  2. $folder = "./images/";
  3. $posted = $_FILES["photo"];
  4. if (!is_uploaded_file($posted["tmp_name"])) die("Le fichier n'est pas arrivé");
  5. if (!file_exists($folder."m_".$posted["name"])) {
  6. move_uploaded_file($posted["tmp_name"], $folder."m_".$posted["name"]) or die("Erreur de copie");
  7. }
  8. ?>
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS