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 :

Configuration pour l'upload


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut Configuration pour l'upload
    Bonjour,

    j'ai un petit script d'upload, qui marche (déjà testé ailleurs) et qui ici me sort un problème sur la fonction move_upload

    J'ai regarder le php_infos() de mon hébergeur (1&1) et une ligne m'a intriguée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    upload_tmp_dir :	no value
    Est-ce normal ? Si non, comment définir un répertoire, si oui, d'où le problème peut-il venir ? (aucunes autres erreurs lors de l'upload, ni de taille, ni d'extension...)

    Merci d'avance pour vos réponses...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est expliqué dans la doc :
    Si non spécifié, PHP utilisera celui par défaut du système.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Soit mais cela ne résout pas mon pb
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous êtes avare en détails : on a ni message d'erreur ni un aperçu (var_dump/print_r) de $_FILES ni même aucun code.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Bah il n'y a pas d'erreur ! c'est ça qui est bizare ! C'est juste cette p**** de fonction move_upload qui merde...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Hum, je ne vois pas ce qu'on peut vous dire plus alors.

    Juste une chose, on ne sait jamais, l'affichage des erreurs est bien actif ? (display_errors à On)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Oui display_errors est bien sur On...

    bon je vais refaire des test pour voir d'où ça vient...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Comme je n'ai toujours pas réussit, je post en dernière espoir le code qui est sûrement faux, puisqu'à parement, cela ne vient pas de l'hébergeur...

    (c'est dans une fonction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    function upload_img($imgname, $imgerror, $imgtmp){
    	$extOk = array('.jpg','.gif','.png', '.bmp');
    	$fileExt = substr($imgname,-4,4);
    	if(!in_array($fileExt,$extOk)){
    		$message = "Type de fichier non autorisé !";
    		$traitement = false;
    	}
    	elseif($imgerror){
    		switch($imgerror){
    			case 1: // UPLOAD_ERR_INI_SIZE
    				$message = "Le fichier dépasse la limite autorisée ! <a href=\"#null\" onclick=\"javascript:history.back();\">Précédent...</a>"; // serveur
    				$traitement = false;
    			break;
    			case 2: // UPLOAD_ERR_FORM_SIZE
    				$message = "Le fichier dépasse la limite autorisée ! <a href=\"#null\" onclick=\"javascript:history.back();\">Précédent...</a>"; // form
    				$traitement = false;
    			break;
    			case 3: // UPLOAD_ERR_PARTIAL
    				$message = "L'envoi du fichier a été interrompu pendant le transfert ! <a href=\"#null\" onclick=\"javascript:history.back();\">Précédent...</a>";
    				$traitement = false;
    			break;
    			case 4: // UPLOAD_ERR_NO_FILE
    				$message = "Le fichier que vous avez envoyé a une taille nulle ! <a href=\"#null\" onclick=\"javascript:history.back();\">Précédent...</a>";
    				$traitement = false;
    			break;
    		}
    	}
    	else{
    		//---------------------------------------
    		// TRAITEMENT DU FICHIER
    		//---------------------------------------
     
    		if(is_uploaded_file($imgtmp)){ // si le fichier a été uploader
    			// Déplacement du fichier du dossier tmp vers le dossier choisit
    			if(move_uploaded_file($imgtmp, "/uploads/".$imgname)){
    				$message = "Fichier uploadé avec succé !";
    				$chemin_img = "/uploads/".$imgname;
    				$traitement = true;
    			}
    			else{
    				$message = "Erreur lors du déplacement du fichier. Merci de ré-essayer en allant dans la partie modification du lien concerné.";
    				$traitement = false;
    			}
    		}
    		else{
    			$message = "Erreur lors de l'upload du fichier. Merci de ré-essayer plus tard.";
    			$traitement = false;
    		}
    	}
     
    	if(!isset($chemin_img)){
    		$chemin_img = "";
    	}
     
    	return array($traitement, $message, $chemin_img);
    }
    Et voila l'appel de fonction (même fichier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(isset($_FILES['monfichier']['name']) && $_FILES['monfichier']['name'] != ""){
    	$retour = upload_img($_FILES['monfichier']['name'], $_FILES['monfichier']['error'], $_FILES['monfichier']['tmp_name']);
    	echo "<span class=\"imp\">".$retour [1]."</span>";
    }
    Extrait du formulaire au cas où...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form ENCTYPE="multipart/form-data" action="" method="post">
    	<p align="center">
    	<span class="imp">Si pas de changement, laisser ce champ vide.</span> Icon : <input type="file" name="monfichier" /> (taille max : 20px*20px)<br />
    [...]
    	<input type="submit" value="Ajouter">
    </form>
    Merci d'avance...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il manque le message d'erreur aussi.

    Sûr que le chemin absolu du répertoire où ils sont déplacés, /uploads/, est correct ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Oui c'est sur à 100% pour le répertoire...

    Bah le message d'erreur c'est celui que j'ai écrit en cas d'échec à savoir : "Erreur lors du déplacement du fichier. Merci de ré-essayer en allant dans la partie modification du lien concerné."

    Pas d'autre message...
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Admettons (même si je n'y crois pas).

    Étant donné le précédent contrôle par is_uploaded_file qui supprime les cas où move_uploaded_file renvoie FALSE sans lever d'erreur (E_WARNING), vous devez forcément en avoir une quelque part.

    Par contre, sont-elles bien toutes affichées ? Ce qui ne semble pas le cas notamment des erreurs de type E_WARNING justement sur leur configuration PHP 4 mutualisée (error_reporting qui n'inclurait pas E_WARNING).

    Tentez d'ajouter en tout début de script au cas où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Aïe tu avais bel et bien raison, voilà l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Warning: move_uploaded_file(/uploads/demande.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homepages/4/d320090684/htdocs/administration/gest_liens.php  on line 50
     
    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpAXHCLn' to '/uploads/demande.png' in /homepages/4/d320090684/htdocs/administration/gest_liens.php on line 50
    Ce que je ne comprends pas, puisque le fichier /uploads/ existe et que son CHMOD est 777 !!!

    EDIT : J'ai réglé le soucis en mettant "../uploads/" au lieu de "/uploads/". Je ne comprends quand même toujours pas pourquoi alors que le dossier uploads existe bien et qu'il se trouve à la racine du site...

    Merci en tout cas de ton aide
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par FotoXe33 Voir le message
    Je ne comprends quand même toujours pas pourquoi alors que le dossier uploads existe bien et qu'il se trouve à la racine du site...
    Les chemins absolus ne s'appliquent pas par rapport à la racine web (DocumentRoot) mais bien à celle du système de fichiers. Exceptions et cas particuliers : être confiné (chroot notamment, jail, etc) - et suivant à quel niveau c'est réalisé - ou en environnement Windows (de surcroît dépendant du SAPI dans ce dernier cas ?).

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Pas tout compris mais je vois ce que tu veux dire...

    En tout cas j'essaierais de m'abstenir de chemin absolut dans certains cas :p
    Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
    Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Configuration pour ne pas passer par le proxy
    Par Worldofdada dans le forum JWS
    Réponses: 5
    Dernier message: 10/11/2005, 19h54
  2. [jcreator]configurer pour la compilation
    Par Kyti dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 18
    Dernier message: 31/03/2005, 11h34
  3. ./configure pour gcc ?
    Par Albus dans le forum Linux
    Réponses: 6
    Dernier message: 03/05/2004, 12h47
  4. Réponses: 13
    Dernier message: 07/04/2004, 14h25

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