IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

comment modifier upload-tmp-dir


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Par défaut comment modifier upload-tmp-dir
    Bonjour!

    J'ai un petit soucis avec la directive upload-tmp-dir contenu dans php.ini!
    Tout d'abord, je travaille sous linux (centos pour être plus précis) et j'utilise apache serveur.
    J'utilise le framework codeigniter.
    J'ai un formulaire, qui permet d'upload des images. En arrivant coté php, pour une raison qui m'échappe, $_FILES['image']['tmp_name'] = '/tmp/phpBGF4567'.
    Du coup j'essaye de trouver le dossier de destination, qui n'existe pas j'ai bien l'impression. Le dossier /tmp est vide, /var/www/tmp est également vide.
    Impossible de récupérer les images, même via move_uploaded_file.

    J'ai donc été fouiner sur le net, et j'ai pu trouver qu'il fallait modifier la directive upload-tmp-dir dans php.ini. Ce que j'ai fait, je l'ai setté à upload-tmp-dir = '/var/www/test/'.
    Mais quoi que je fasse, même en redémarrant apache, le serveur, $_FILE['image']['tmp_name'] est toujours setté a '/tmp/' + insert random letters.
    Du coup ma question est, comment changer le dossier temporaire de tmp_name?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Dans ton formulaire, déjà tu dois faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="post" action="[votre fichier PHP pour l'upload.php]" enctype="multipart/form-data">     
              <input type="hidden" name="MAX_FILE_SIZE" value="2097152">     
              <input type="file" name="nom_du_fichier">    
              <input type="submit" value="Envoyer">    
    </form>
    par exemple
    Ce qui te donnera un fichier temporaire que tu transformera sur le serveur par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    move_uploaded_file ($_FILES['nom_du_fichier'] ['tmp_name'], 
           "../uploads/{$_FILES['nom_du_fichier'] ['name']}")
    de manière à ce que les utilisateurs puisse télécharger le fichier

  3. #3
    Membre actif
    Avatar de Mell
    Femme Profil pro
    Développeuse Front-end
    Inscrit en
    Janvier 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeuse Front-end
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2011
    Messages : 107
    Par défaut
    As-tu mis les droits sur ton dossier temporaire ? Sinon il va reprendre celui par défaut il me semble

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Effectivement le répertoire de l'upload doit être ouvert ...

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Pour ma part vous tentez de résoudre le problème sans vraiment savoir d'où il vient.
    De plus, qu'il y ait un problème de droit, peut être (voire surement), mais si en reconfigurant coté du php.ini un autre répertoire que "tmp" et qu'après ça Php déposerait les fichiers toujours dans "tmp", alors il y a toujours un problème.
    La question que je me pose c'est : Est-ce que la modification se fait dans le bon php.ini (il y en a plusieurs) ?

    Par ailleurs, attention au piège.
    (Je ne connais pas CodeIgniter, je sais juste que c'est un FW)
    Les FW proposent souvent de redéfinir certaines config du php.ini par des valeurs par défaut, de plus, pas toujours les mêmes que celle de Php.
    Là où je veux en venir (le piège), c'est que si on modifie une directive directement dans le (bon) php.ini, on croit que ce sera correcte.
    Pas d'bol, le FW redéfini (nous coupe l'herbe sous l'pied) la même directive avec sa valeur par défaut (retour à la case départ).

    Donc épluche un peu les différents fichiers de config coté CodeIgniteur si cette directive ne serait pas redéfinie.
    Tout cela à tout hasard

    Puis de toute manière, vérifie bien les valeurs de tes directives dans ton application soit en appelant phpinfo() ou ini_get().
    Pourquoi pas le faire à plusieurs endroits, genre avant que CodeIgniter soit chargé (donc valeur du php.ini) et après.
    C'est cela qui devrait te confirmer si tu modifie le bon php.ini



    Toujours est-il que si Php tente de déposer un fichier dans un répertoire qui n'existe pas, alors cela devrait générer une erreur.
    Est-ce que tu obtiens une erreur dans cet ordre là ? (voir les logs si nécessaire)

    Puis si Php dépose un fichier dans un répertoire qui existe bien, mais que cette fois il y a un problème de droit pour le récupérer/(re)déplacer, là encore cela devrait générer une erreur (différente de celle de ci-dessus).
    Idem, as tu une erreur pour ça ?

    Si tu as aucun retour d'erreur, faudrait d'abord te pencher sur le pourquoi tu n'obtiens pas d'erreur alors que cela devrait être le cas.
    C'est cela qui aide à savoir quoi faire, et non faire des trucs au pif
    Gestion des erreur activée ?
    Niveau des d'erreurs au max (E-ALL au minimum) ?
    CodeIgniter doit surement redéfinir ces directives là par des valeurs par défaut, faut peut être revoir ça.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Mardewin Voir le message
    J'ai un formulaire, qui permet d'upload des images.
    Impossible de récupérer les images, même via move_uploaded_file.
    Avant d'aller bricoler dans le php.ini, il serait bon de savoir quel est l'OBJECTIF de la manoeuvre.
    ...et voir ton code qui permet d'uploader l'image !

    Normalement, ceci suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move_uploaded_file( $_FILES['image']['tmp_name'], $repertoire.$_FILES['image']['name'] );
    Dernière modification par Invité ; 15/12/2012 à 12h00.

  7. #7
    Membre averti
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Par défaut
    Bonjour!
    Merci à tous pour vos réponses déjà

    Alors, l'objectif de la manœuvre est tout con -> Récupérer une image à partir d'un formulaire.
    D'habitude le /tmp/ ne me pose pas de problèmes, mais la il n'y a pas grand chose qui se passe.
    En activant la détection d'erreurs maximale, je tombe sur ces deux erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    A PHP Error was encountered
    Severity: Warning
    Message: move_uploaded_file(/var/www/siteweb/pictures/temp/php5oLUHa.png): failed to open stream: Permission denied
    Filename: controllers/column.php
    Line Number: 94
     
    A PHP Error was encountered
    Severity: Warning
    Message: move_uploaded_file(): Unable to move '/tmp/php5oLUHa' to '/var/www/siteweb/pictures/temp/php5oLUHa.png'
    Filename: controllers/column.php
    Line Number: 94
    Ma ligne move_uploaded_file ressemble a ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    move_uploaded_file('/tmp/php5oLUHa',  '/var/www/siteweb/pictures/temp/php5oLUHa.png');
    Normalement ce code est correct... Enfin il me semble, je ne comprend pas du tout la première erreur, pourquoi essayerait-il d'ouvrir le fichier de reception? Ou alors y aurait-il un problème de droit sur le dossier? Je vais tester mais normalement ca ne devrait pas etre le cas.

    Coté html j'ai bien le enctype ainsi que la taille max de l'image.
    Jvais jetter un coup d'oeil coté code igniter aussi histoire de voir si je peux modifier le dossier temporaire :/

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. Comment modifier un Metafile existant ?
    Par monmien dans le forum Langage
    Réponses: 4
    Dernier message: 09/09/2004, 11h59
  3. [jar] Comment modifier un fichier jar
    Par newfsch dans le forum JBuilder
    Réponses: 5
    Dernier message: 18/07/2004, 14h25
  4. comment modifier une texture?
    Par tibyann dans le forum DirectX
    Réponses: 6
    Dernier message: 16/06/2004, 15h27
  5. [ClassPath] Comment modifier le classpath d'eclipse?
    Par Elmilouse dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/04/2004, 18h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo