fonction move_uploaded_file() => erreur

Par KevinTss, il y a 9 ans


Bonjour à tous.

ça fait quelques temps que j'essaie de mettre au point une système de news et je rencontre des problèmes avec ma fonction move_uploaded_file()

J'ai créer une fonction me permettant d'uploader des images de façon à la réutiliser quand je veux.

J'ai donc créer la possibilité aux membrex d'uploader une photo de profil, j'utilise ma fonction que j'ai nommé "upload_img" et tout fonctionne très bien.

Je créer ma page manageNews.php, où je refait un appel à cette fonction et bim voilà l'erreur :

Warning: move_uploaded_file(pics/photoprofil/21.jpg): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/Archive/CrossfitWildWall2/modules/fonctions.php on line 291

Warning: move_uploaded_file(): Unable to move '/Applications/MAMP/tmp/php/php0dWDmc' to 'pics/photoprofil/21.jpg' in/Applications/MAMP/htdocs/Archive/CrossfitWildWall2/modules/fonctions.php on line 291

Erreur courrante vous diriez...

J'ai fait les choses suivantes :

Voilà le code de ma fonction :

function upload_img($image, $dossier="pics/", $nom_image=NULL){ $dossier_min = $dossier.'min/'; $fichier = basename($image['name']); $taille_maxi = 2097152; //100000; $taille = filesize($image['tmp_name']); $extensions = array('.png', '.jpg', '.jpeg', '.gif'); $extension_img = strrchr($image['name'], '.'); if( !in_array( $extension_img, $extensions ) ){ $erreur = 'Vous devez uploader un fichier de type png, jpg, jpeg ou gif<br>'; } if( $taille > $taille_maxi ){ $erreur = 'Le fichier est trop gros... (max 2Mo)'; } //var_dump($_FILES['ImageNews']['name']); if( !isset( $erreur ) ){ //S'il n'y a pas d'erreur, on upload $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if( $nom_image == NULL ){ if( move_uploaded_file($image['tmp_name'], $dossier . $fichier) ){ //echo 'Upload effectué avec succès !'; $lien_image = $dossier.$fichier; return $lien_image; } else{ //echo 'Echec de l\'upload !'; return false; } } else{ if( move_uploaded_file($image['tmp_name'], $dossier . $nom_image . $extension_img) ){ //echo 'Upload effectué avec succès !'; $lien_image = $dossier.$nom_image . $extension_img; return $lien_image; } else{ FALSE). //echo 'Echec de l\'upload !'; return false; } } } else{ return false; } }

donc cette fonction fonctionne quand elle est appelé depuis ma page accountParam.php

if( session_status() == PHP_SESSION_NONE ){ session_start(); } include "modules/config.php"; require_once "modules/include.php"; reconnectFromCookie(); if( !isset($_SESSION['auth']) ){ $_SESSION['flash']['bad'] = "Vous devez être connecté pour accéder à cette page"; header('Location: login.php'); exit(); } /* ############################################################################################### *\ fonctions des paramètres \* ############################################################################################### */ // Validation d'une photo de profil if( !empty($_FILES) ){ // si il y a bien un fichier envoyé require("modules/imgClass.php"); if( isset($_FILES['profilPic']) ){ // stockage du fichier dans une variable $img = $_FILES['profilPic']; // traitement de l'extension et vérif $extension = explode(".", $img['name']); //$ext = strtolower(substr($img['name'], -3)); $allow_ext = array('jpg', 'jpeg', 'png'); if( in_array($extension[1], $allow_ext) ){ $bdd = connect_bdd(); $result_upload_img = upload_img($_FILES['profilPic'], "pics/photoprofil/", "".$_SESSION['auth']['ID_uti'].""); $_SESSION['flash']['good'] = "Votre photo de profil à bien été changée"; header("location: accountParam.php"); exit(); } else{ $_SESSION['flash']['bad'] = "Votre image n'a pas l'une des extensions suivantes : 'jpg', 'jpeg' ou 'png'"; //header("location: accountParam.php"); //exit(); } } } if( isset( $_POST['supImg'] ) ){ // si on supp un photo //echo "<span class=\"msg\">\"".$_POST['nomImg']."\" à bien été supprimée</span>"; //unlink("pics/photoprofil/".$_POST['nomImg']); //unlink("pics/photoprofil/min/".$_POST['nomImg']); } require "content/part/head.php"; // require "content/part/nav.php"; ?> <section id="param"> <div id="paramContent"> <h1>Paramètres</h1> <section id="param"> <form class="formProfilPicture" method="post" enctype="multipart/form-data"> <input type="file" name="profilPic"> <input type="submit" name="Envoyer"> </form> </section> </div> </section> <?php require "content/part/foot.php"; ?>

mais ne fonctionne pas depuis cette page : manageNews.php

if( session_status() == PHP_SESSION_NONE ){ session_start(); } include "../modules/config.php"; require_once "../modules/include.php"; reconnectFromCookie(); if( !isset($_SESSION['auth']) ){ // L'utilisateur est-il connecté ? if( $_SESSION['auth']['categorie'] > 2 ){ // l'utilisateur est-il catégorie supérieur à 2 ? $_SESSION['flash']['bad'] = "Vous n'avez pas les droits nécéssaire pour accéder à cette page"; header('Location: ../account.php'); exit(); } $_SESSION['flash']['bad'] = "Vous devez être connecté pour accéder à cette page"; header('Location: ../login.php'); exit(); } ///////////////////////////////////////////////// // Si l'utilisateur veux ajouter un article ///////////////////////////////////////////////// if( isset($_POST['validation-ajout-article']) ){ echo '<br><br><br><br>'; //debug($_FILES); if( !empty($_FILES) ){ // si il y a bien un fichier envoyé //$result_upload_img = upload_img($_FILES['imageNews'], "pics/news/"); $result_upload_img = upload_img($_FILES['imageNews'], "pics/photoprofil/", "".$_SESSION['auth']['ID_uti'].""); } } echo '<br><br><br><br>'; //debug($_FILES['ImageNews']); // echo "ok"; ///////////////////////////////////////////////// ///////////////////////////////////////////////// // Création des données de pagination ///////////////////////////////////////////////// $nombre_article = select_number_of_item("news"); $nombre_article = $nombre_article['nb']; $article_par_page = 30; $nombre_de_page = ceil( (int)$nombre_article / (int)$article_par_page ); if( isset($_GET['page']) and $_GET['page'] > 0 and $_GET['page'] <= $nombre_de_page ){ $page_courante = $_GET['page']; } else{ $page_courante = 1; } ///////////////////////////////////////////////// require "../content/part/head.php"; ?> <section id="manageNews"> <div id="manageNewsContent"> <h1>News Management</h1> <h2>Ajouter une news</h2> <form class="form01" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="2097152"> <input type="file" name="imageNews" id="image"> <!-- <input type="text" name="titre" placeholder="Titre"> <textarea id="textarea-cke" name="contenu"></textarea> <input type="text" name="lien" placeholder="lien"> --> <input type="submit" name="validation-ajout-article" value="Ajouter"> </form> </div> </section> <?php require "../content/part/foot.php"; ?>

Est-ce que quelqu'un sait-il d'où ça vient ?

Merci d'avance pour votre aide !

Tchoubisou

3 réponses

AlexJM, il y a 9 ans

Tes deux fichiers sont dans le même dossier ?

KevinTss, il y a 9 ans

Salut Alex,
Alors non manageNews est dans manage/manageNews.php

et la fonction est dans module/fonctions.php

EDIT :

En effet c'était le soucis...
j'était tellement dedans que je passais à coté !
Tout ce temps perdu pour une si petite erreur ! Merci à toi !

AlexJM, il y a 9 ans

De rien ;)