Se connecter / S'enregistrer

Résolu [php] script Upload fichier $_files vide -_-"

Solutions (10)
Tags :
  • Script
  • Programmation
, Programmation (collector) |
Bonjours a tous , voila je suis entrain de crée un script qui me permet d'upload une image sur mon serveur ....


donc voila le formulaire + code php :
  1. <?php
  2. // test admin
  3. session_start();
  4. include('../init.php');
  5. if($_SESSION['mdp'] != $bon_mdp){
  6. header('Location: index.php');
  7. }
  8. //------
  9.  
  10.  
  11. if(!empty($_POST['titre'])){
  12. echo $_POST['titre']."<br />";
  13. print_r($_FILES);
  14. if(!empty($_FILES['img'])){
  15. echo '<br />img';
  16. }else{
  17. echo '<br />News sans Image';
  18. }
  19. echo $_FILES['img']['name'];
  20.  
  21. }
  22.  
  23.  
  24. ?>
  25. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
  26. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>">
  27. <head>
  28. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  29. <title>News</title>
  30. </head>
  31. <body>
  32. <h1>News</h1>
  33. <a href="menu.php">retour index admin</a><br /><br />
  34. <br />
  35. <form action="news.php" method="post" enctype="multipart/form-data" >
  36. Titre : <input name="titre" type="text" /><br />
  37. Texte de news :<br />
  38. <textarea name="news" cols="50" rows="10"></textarea><br />
  39. <input type="hidden" name="MAX_FILE_SIZE" value="16777216" />
  40. Image :<input type="file" name="img" /><br />
  41. <input name="" type="submit" value="Valider" />
  42. </form>
  43. </body>
  44. </html>


le problème c'est que la page renvoi :
Array ( )
News sans Image

alors que j'ai bien choisi une image avant de validée le formulaire ...
ou est mon erreur ?



Contenus similaires
Meilleure solution
partage
|
Bonjour andrelec1,

Le code m'a l'air bon, ça serrait pas plutôt un problème du genre PHP qui n'a pas les droits d'écriture sur le répertoire temporaire ?
  • Commenter cette solution |
Score
0
òh
òi
|
Petite astuce fort pratique:
Comme tu as un init.php (que j'imagine inclut partout), mets dedans:
  1. define('BASE_DIR', realpath(dirname(__FILE__).'/../'));

Le '../' étant bien sur pour revenir à la racine de ton site.
Ensuite, partout tu peux faire tes chemins de la forme:
  1. BASE_DIR.'admin/';
  2. BASE_DIR.'images/news/';

  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
en fais ce qui me manquer c'est le premier /

oui j'ai bien tous modifier dans le php.ini !!!

je vais pas trop toucher pour le moment sa marche ... je fini de développer ce site
et je corrigerais les erreur du php.ini

Merci de votre aide ...
  • Commenter cette réponse |
Score
0
òh
òi
|
tadammmmmmmmmmmmm

le chemin doit être complet !

/var/www/img_news/

(rajoute les dossiers si il en manque)

de plus, dans le php.ini tu as bien modifier tmp_dir ?
tu as reload apache ?
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
( okinou O_o ou es passer ton avatar ??? )

donc c'est bien dans le php.ini que j'ai défini la dossier /var/www/upload
et cela ne marche pas XD car j'ai quand même
[tmp_name] => /tmp/php55hTpK

c'est un serveur de teste que je me sert pour développer donc oui il y a des chose assez bizarre ^^

me reste le probleme avec

  1. move_uploaded_file($_FILES["img"]["tmp_name"] , $dir);


qui me retourne :
  1. Warning: move_uploaded_file(../img_news) [function.move-uploaded-file]: failed to open stream
  2. Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpzo9M6I' to '../img_news


les dossier sont organisée de manier suivante :

/admin/news.php ==> la page d'upload ( ou /var/www/admin/news.php )
/img_news/ ==> dossier ou doive finir les images !!!

( pour cela que mon $dir = "../img_news"; )
  • Commenter cette réponse |
Score
0
òh
òi
|
En effet, cela est bizarre, après relecture je viens sans doute de comprendre, comment peut tu uploader dans le bon répertoire sans le "mv" ? pour bouger le fichier du répertoire temporaire dans le répertoire final de destination ?

je pari que ton fichier php actuel se trouve dans /var/www/upload aussi non ? ce chemin est identique à ton répertoire php temporaire, ducoup, le fichier uploader apparait dans le ce répertoire directement.

puis le dossier /Var/www appartient à www-data (apache) il se peut donc que les fichiers créer (meme le fichier .php) n'est pas les bon droit pour etre affiché sur le web, c'est sans doute pour cela que tu as été obliger de faire un chmod.

bref, tout ça est très mal configuré.

tu devrais :

- créer un user dans /home/nomquetuveux/www
- faire ton vhost de ton domaine qui pointera dans /home/nomquetuveux/www
- modifier le chemin temporaire d'upload de php vers /home/nomquetuveux/temp (par ex)

car si tu veux uploader des fichiers jusqu'a 1 go comme tu semble le montré ? (ou alors tu as modifier ca inutilement ?) le laisser dans /var est une mauvaise idée car si tu as laisser la partition par défault à l'installation du serveur, y'a une chance pour que la partition /var soit trop petit, de plus, il te faudra paramétré ton script avec set_time_limit() et autre à 0 car sinon au bout de 30sec tu aura un timeout.

enfin, tu devrais mettre tout ton espace disque disponible qu'il te reste dans /home/
  • Commenter cette réponse |
Score
0
òh
òi
|
andrelec1 a dit :

edit : un chmod 777 sur la page et ça marche -_-" !!!!


Pour le coup je comprend pas, c'est sur le dossier /var/www/upload/ qu'il fallait changer les droits, pas la page :D 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Meilleure réponse sélectionnée par andrelec1.
  • Commenter cette réponse |
Score
0
òh
òi
|
Je vote aussi pour celà, car en reprenant exactement ton code, je n'ai eu aucun souci.
Il y a peut-être aussi un problème de poids du fichier, as-tu testé avec une très petite image ?

Au cas où, active l'affichage des erreurs.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
le phpinfo(); me dit :
file_uploads On
post_max_size 8M 8M
upload_max_filesize 1024M
upload_tmp_dir '/var/www/upload/'

...


edit : un chmod 777 sur la page et ça marche -_-" !!!!
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS