Tom's Guide > Forum > Programmation > copy(images/bc.gif): failed to open stream: Permission denied

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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)

Répondre à crazycat@idn

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

Voici le code:

[b]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>

[b]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à ...

Répondre à brutus_v

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:

Code :
  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. ?>

Répondre à crazycat@idn
Tom's Guide > Forum > Programmation > copy(images/bc.gif): failed to open stream: Permission denied
Aller à :

Il y a 2933 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens