Upload php problème ?

Fermé
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 - 30 juin 2011 à 14:26
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 - 30 juin 2011 à 19:57
Bonjour,

J'essaie de faire un upload sur un serveur FTP, mais ça ne fonctionne pas. je suis en phase de test.

Voici le formulaire :

<form method="POST" action="upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 10Mo -->
     <input type="hidden" name="MAX_FILE_SIZE" value="10000000">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>


Voici le fichier upload.php

<?php
$ConfigServeur = '---------'; //Adresse du serveur FTP
$ConfigId = '-------'; //Compte utilisateur
$ConfigMdp = '---------'; //Mot de passe

// j'ai mis des ---- uniquement sur le forum :-)


//Connexion au serveur FTP	

if($Connexion = ftp_connect($ConfigServeur))
{

	//Identification

	if (@ftp_login($Connexion, $ConfigId, $ConfigMdp))
	{
		echo "Connecté en tant que $ftp_user sur $ftp_server\n<br/>";
	}
	else echo 'Connexion impossible en tant que '.$ConfigId;
}
else echo 'Impossible de se connecter à '.$ConfigServeur;


$dossier = '.';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 10000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.'); 

//Début des vérifications de sécurité...

if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...

     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...

     {
          echo 'Upload effectué avec succès !';
     }

     else //Sinon (la fonction renvoie FALSE).

     {
          echo 'Echec de l\'upload !';
     }

}
else
{
     echo $erreur;
}

ftp_close($Connexion); //Deconnexion
?>



A l'écran, ça m'affiche :
Connecté en tant que sur
échec de l'upload !

J'ai pourtant copié de code de https://antoine-herault.developpez.com/tutoriels/php/upload/
A voir également:

5 réponses

doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 99
30 juin 2011 à 15:45
Salut,

Je crois que tu t'es un peu mélangé :)

D'une part tu peux upload un fichier sur un serveur avec ta form

Ensuite tu peux déplacer le résultat du post ($_FILE) à un endroit différent du répertoire temporaire dans lequel le ficher se retrouve par défaut à l'aide de move_uploaded_file

Pour cela tu n'a pas besoin de connexion FTP.

La connexion FTP c'est encore autre chose, si tu voulais par exemple déplacer le fichier du premier serveur vers un deuxième serveur distant. Dans ce cas il te faudrait utiliser la fonction ftp_put après avoir créé ta connexion FTP.
0
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 97
Modifié par gotomtom le 30/06/2011 à 16:28
Effectivement, je me suis légèrement mélangé avec le FTP. Je partais de l'idée d'envoyer de l'ordi sur le site web, mais comme mon interface est sur le serveur du même site web ==> pas besoin de FTP car nous sommes à la même place.

J'aime bien faire un formulaire et une page cible, c'est un peu plus simple.
Par contre ça ne fonctionne toujours pas. J'ai tjs le message "Echec de l'upload !"
Formulaire identique.

upload.php

<?php 
$dossier = '/html/images/temp/'; 
$fichier = basename($_FILES['avatar']['name']); 
$taille_maxi = 100000; 
$taille = filesize($_FILES['avatar']['tmp_name']); 
$extensions = array('.png', '.gif', '.jpg', '.jpeg'); 
$extension = strrchr($_FILES['avatar']['name'], '.');  
//Début des vérifications de sécurité... 
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau 
{ 
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; 
} 
if($taille>$taille_maxi) 
{ 
     $erreur = 'Le fichier est trop gros...'; 
} 
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload 
{ 
     //On formate le nom du fichier ici... 
     $fichier = strtr($fichier,  
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',  
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); 
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier.$fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... 
     { 
          echo 'Upload effectué avec succès !'; 
     } 
     else //Sinon (la fonction renvoie FALSE). 
     { 
          echo 'Echec de l\'upload !'; 
     } 
} 
else 
{ 
     echo $erreur; 
} 
?>


C'est peut-être le chemin qui est faux.

Sur FileZilla c'est indiqué : "site distant : /html/images/temp/"

Par exemple, l'image toto3.jpg dans ce fichier se retrouve sur http://www.Mon-Site.fr.fr/images/temp/toto3.jpg

Mon interface se trouve dans "site distant : /html/admin/upload.php"

Donc je trouve mon interface sur http://www.Mon-Site.fr/admin/upload.php

Pouvez-vous m'aider ? Merci
0
doctormad Messages postés 430 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 2 avril 2015 99
30 juin 2011 à 16:27
En effet c'est probablement le chemin.

Il y a plusieurs possibilités tu peux utiliser le chemin complet comme tu fais là mais alors il te faut le chemin réellement complet, pour le voir utilises $_SERVER['DOCUMENT_ROOT']

Sinon tu passe par un chemin relatif en utilisant dirname(__FILE__) par exemple.

Dans ton exemple ça donnerais move_uploaded_file($_FILES['avatar']['tmp_name'], dirname(__FILE__).'/../images'.$fichier)
0
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 97
Modifié par gotomtom le 30/06/2011 à 17:42
C'est bien le chemin. Avec Wamp en local, le code fonctionne.

J'ai tout essayé, rien ne fonctionne. ton code bien sûr, mais aussi :

$dossier = '/html/images/temp/';
$dossier = '/html/images/temp';
$dossier = './html/images/temp';
$dossier = './html/images/temp/';
$dossier = '/home/guest/html/images/temp/';
$dossier = '/home/guest/html/images/temp';
$dossier = './html/images/temp/';
$dossier = '../images/temp';
$dossier = '../images/temp/';


Je me demande si ce n'est pas le serveur qui interdit l'upload.

Quand je fais,
<?php     
  phpinfo();     
?>
j'ai les même résultats que le tutoriel sauf pour

upload_tmp_dir qui me donne no value

Le reste est ok :

file_uploads= On
upload_max_filesize = 64M
post_max_size = 84M

Explication :
file_uploads= On/Off permet d'autoriser ou non l'envoi de fichiers.
upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.
upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.
post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize
0

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

Posez votre question
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 97
30 juin 2011 à 19:57
J'ai trouvé la solution :

$dossier = "../images/temp/";

Il manquait le droit d'écriture à Temp :-) Désormais avec 707, ça va bcp mieux..... temp drwx---rwx

Merci
0