Upload des image qui ne marche pas !!

Résolu/Fermé
Kamal - 17 févr. 2012 à 14:29
 Kamal - 18 févr. 2012 à 10:59
Bonjour,

j'utilise ce scripte php ,qui marche parfaitement bien en local en utilisant Mamp , par contre ça me marche pas avec mon héberger ,

j'ai vérifié phpinfos() ==> j ai le droit d'upload mais la variable upload_temp_dir = "no value"

voila mon scripte :

<?php

// Constantes
define('TARGET', '/upload/'); // Repertoire cible
define('MAX_SIZE', 100000); // Taille max en octets du fichier
define('WIDTH_MAX', 800); // Largeur max de l'image en pixels
define('HEIGHT_MAX', 800); // Hauteur max de l'image en pixels

// Tableaux de donnees
$tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees
$infosImg = array();

// Variables
$extension = '';
$message = '';
$nomImage = '';

/************************************************************
* Creation du repertoire cible si inexistant
*************************************************************/
/*if( !is_dir(TARGET) )
{
if( !mkdir(TARGET, 0755) )
{
exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
}
}*/

/************************************************************
* Script d'upload
*************************************************************/
if(!empty($_POST))
{
// On verifie si le champ est rempli
if( !empty($_FILES['fichier']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);

// On verifie l'extension du fichier
if(in_array(strtolower($extension),$tabExt))
{
// On recupere les dimensions du fichier
$infosImg = getimagesize($_FILES['fichier']['tmp_name']);

// On verifie le type de l'image
if($infosImg[2] >= 1 && $infosImg[2] <= 14)
{
// On verifie les dimensions et taille de l'image
if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE))
{
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier']['error'])
&& UPLOAD_ERR_OK === $_FILES['fichier']['error'])
{
// On renomme le fichier
$nomImage = md5(uniqid()) .'.'. $extension;

// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
{
$message = 'Upload réussi !';
}
else
{
// Sinon on affiche une erreur systeme
$message = 'Problème lors de l\'upload !';
}
}
else
{
$message = 'Une erreur interne a empêché l\'uplaod de l\'image';
}
}
else
{
// Sinon erreur sur les dimensions et taille de l'image
$message = 'Erreur dans les dimensions de l\'image !';
}
}
else
{
// Sinon erreur sur le type de l'image
$message = 'Le fichier à uploader n\'est pas une image !';
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = 'L\'extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = 'Veuillez remplir le formulaire svp !';
}
}
?>



Merci pour vos réponse .



A voir également:

22 réponses

Tu vois, tu n'as pas le droit d'écrire dans ce dossier.


Tu vas me dire que tu y arrives avec Filezilla, mais ce n'est pas la même chose. Dans un cas, c'est l'utilisateur de ftp qui accède au dossier, dans l'autre c'est ton script.

As-tu bien donné les droits de lecture-écriture à tout le monde (777).

Si tu as déjà donné le maximum de droits autorisé par ton hébergeur, détruis le dossier et recrée-le par script. En principe, si c'est le script qui a créé le dossier, on peut espérer qu'il aura le droit d'écrire dedans...
[edit] merci d'avoir fait le echo quand même, tout est correct, il n'est plus utile
1
avec filezilla, tout simplement.
Tu sélectionnes le dossier distant, clic droit, droits d'accès au fichier et tu choisis de donner ou non les droits de lecture, écriture et exécution au propriétaire, au groupe ou à tout le monde
1
Bonjour

upload_tmp_dir = "no value" est normal avec phpinfo, car le répertoire temporaire n'est créé que s'il y a effectivement un fichier de téléchargé.
As-tu un message d'erreur ? Peux-tu insérer quelques 'echo' dans ton code pour voir où tu passes et où tu ne passes pas ?
(au passage : quel est l'intérêt de faire md5 sur uniqid ? Ça m'échappe vraiment)
0
j ai vérifié mon code et merci pour votre réponse.

en effet , ce que me gêne trop est que tout marche nickel en local avec Mamp mais pas avec mon héberger.

Voila j ai toujours le message qui s'affiche là : 'Problème lors de l\'upload !';
quand j'exécute cette partie.


if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
{
$message = 'Upload réussi !';
}
else
{

$message = 'Problème lors de l\'upload !';
}


j'ai déjà essayé :

define('TARGET', $_SERVER['DOCUMENT_ROOT'].'/upload/');

et

define('TARGET', 'upload/');

les deux ne marche pas ..

vraiment .. c parmi les plus gros problème dans ma vie ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
c parmi les plus gros problème dans ma vie
Tu as bien de la chance de ne pas en avoir de plus grave ^^

Tes deux définitions de TARGET semblent correctes, encore faut-il que tu aies effectivement créé le dossier upload au bon endroit. Avec upload en minuscules.
0
oh oui .. d'ailleur j ai même fait le teste pour insérer une image manuellement dans le dossier upload via Filezilla pour vérifier l'affichage

je peux assurer que tous mes dossier sont bien là ..

c juste le mécanisme pour insérer l'image via ce formulaire qui ne marche pas .

je continue toujours à chercher sur le net ..
0
juste avant ta ligne
if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
peux-tu insérer :
echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage),'*';
histoire de voir...
D'autre part, quelle est la taille du fichier que tu essayes de télécharger ?
0
j ai fait un écho de :


echo "* (".$_FILES['fichier']['tmp_name'].", TARGET.$nomImage) *" ;

et ça donner :


* (/tmp/phpRuwTYl, TARGET.2fb8f2c725cf2f559b85c9703cd4b262.gif) *


Alors j ai pansé qu'il faut remplacer TARGET par : upload/

Mais non ... ça pas marché :(
0
Ce n'est pas le echo que je t'avais demandé, pouquoi n'as-tu pas fait un copier-coller de ma ligne ?
0
Tu peux aussi ajouter au début du script :
error_reporting(E_ALL);

pour voir s'il n'y a pas un message d'erreur non affiché
0
le copier coller de votre ligne m'a donné une erreur sur dreamweaver CS5 .

pour vérifier votre ligne est bien celle là :

echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage),'*';


déjà il y a une parenthèse absente à gauche !!!


je t'assure que j ai essayé d'exécuter mon code sans penser :) hh
0
Il y en a surtout une en trop à droite, c'est évident. J'écris sans tester car je ne vais pas simuler tout ton site pour faire un téléchargement : )
echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage,'*';

ajoute aussi error_reporting(E_ALL); au début du script
0
Mon père regarde ce que j 'ai trouvé là avec ton error_reporting(E_ALL) :

Warning: move_uploaded_file(upload/4eae3e392032b9f5bda2db2c07a36923.png) [function.move-uploaded-file]: failed to open stream: Permission denied in /var/www/vhosts/monnomdedomain.com/httpdocs/uploadmeetdomainers2.php on line 70

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpMkmVJ6' to 'upload/4eae3e392032b9f5bda2db2c07a36923.png' in /var/www/vhosts/monnomdedomain.com/httpdocs/uploadmeetdomainers2.php on line 70
0
avec votre écho :

echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage),'*';


j ai le message suivant :


*/tmp/phpLkvh7p*upload/8e0c22f32de976fbd727cdd953ae625f.gif*
0
j'ai bien compris le truc ... D'abord merci car tu as résolu une partie de mon soucis ..


Personnellement, j'ai créé le dossier en local puis je l'ai transférer via Filezilla à mon dossier chez l'hébergeur ..

Apparemment je dois juste donner tout les droits d'écriture-lecture à tout le monde..

Père tu as une idée pour faire cette tache .. en attendant .. je navigue toujours pour trouver une réponse.

Merci ..
0
waw .. sérieusement ça marche ..

oooooooooooh laa ..

Merci Ami c vraiment imper tt ça ..

ça maaaaaaaaaaaarche ...

je suis heureux .. c'est quoi le numéro de compte bancaire ... hhh

je rigole .. en tout cas merci énormément ..
0
De rien. C'est toujours un plaisir d'aider quelqu'un qui s'accroche et qui réagit à ce qu'on lui dit.
0
j ai fait tt .. j ai testé et ça marche .. puis .. à certain moment j ai plus accées à mon site web sur le net ..


tu pense que cela à une relation avec les droit publique que j ai donnée .. à mon dossier

:p :p
0
Ça m'étonnerait beaucoup
0
j ai rien dit .. apparemment , j ai perdu la connexion pendant quelques secondes .. et ça n a pas de relation ..

la solution c'était dans les droit d'écriture qu il faut donner à mon dossier ..
Père, est ce que je peux poser une autre problématique ou tu es fatigué .??
0
S'il te plaît, pas de problématique, problème suffira.

Je ne suis pas fatigué mais je vais m'absenter un peu. Réponse plus tard ce soir, si j'en ai une
0
Merci Ami .. ça fait vraiment plaisir de trouver des gens comme toi
0