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
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 !