Upload des image qui ne marche pas !!
Résolu
Kamal
-
Kamal -
Kamal -
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 .
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:
- Upload des image qui ne marche pas !!
- Image iso - Guide
- Youtube upload - Télécharger - Diffusion
- Acronis true image - Télécharger - Sauvegarde
- Reduire taille image - Guide
- Légender une image - Guide
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
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
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
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
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)
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)
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 ..
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 ..
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.
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.
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 ..
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 ..
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 ?
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 ?
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é :(
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é :(
Ce n'est pas le echo que je t'avais demandé, pouquoi n'as-tu pas fait un copier-coller de ma ligne ?
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é
error_reporting(E_ALL);
pour voir s'il n'y a pas un message d'erreur non affiché
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
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
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
echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage,'*';
ajoute aussi error_reporting(E_ALL); au début du script
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
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
avec votre écho :
echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage),'*';
j ai le message suivant :
*/tmp/phpLkvh7p*upload/8e0c22f32de976fbd727cdd953ae625f.gif*
echo '*',$_FILES['fichier']['tmp_name'],'*',TARGET.$nomImage),'*';
j ai le message suivant :
*/tmp/phpLkvh7p*upload/8e0c22f32de976fbd727cdd953ae625f.gif*
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 ..
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 ..
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 ..
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 ..
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
tu pense que cela à une relation avec les droit publique que j ai donnée .. à mon dossier
:p :p