[php] Upload et Open_BaseDir restriction

Upload et Open_BaseDir restriction [php] - Programmation

Marsh Posté le 03-10-2001 à 21:56:26    

Salut,
 
J'ai fait un petit script pour que les users de mon site puissent uploader leur photo.
 
Ca marche très bien chez moi, mais lorsque je l'essaie chez mon hébergeur (forez.com) j'obtiens ce message:
 

Citation :


Warning: open_basedir restriction in effect. File is in wrong directory in /opt4/opt2/forez/httpd/htdocs/sites2/monsitemonsite/monsite/portrait_post.php3 on line 4


 
La page avec le formulaire contient ça:
 

Code :
  1. <FORM NAME="upload" ENCTYPE="multipart/form-data" ACTION="portrait_post.php3" METHOD=POST>
  2. <input type="text" name="user" value="">
  3. <input type="password" name="pass" maxlength="30" size="20">
  4. <input type="File" name="userfile" size="30" maxlength="255">
  5. <a href="javascript:document.upload.submit()">Envoyer</a>
  6. </FORM>


 
et le script d'upload ça:
 

Code :
  1. <?
  2. $path ="common/i/portraits/";
  3. $filename = $user.".jpg";
  4. move_uploaded_file($userfile, $path.$filename);
  5. ?>


 
J'ai essayé différentes valeurs pour $path  mais rien à faire : "", "/common/i/portraits/", "../common/i/portraits/", "/common/i/portraits", "/opt4/opt2/forez/httpd/htdocs/sites2/monsitemonsite/monsite/" etc.
 
 
Quelqu'un a-t'il une idée pour que ça fonctionne?
 
Merci d'avance pour vos réponses.

Reply

Marsh Posté le 03-10-2001 à 21:56:26   

Reply

Marsh Posté le 03-10-2001 à 23:18:39    

Je sais pas si çà à un rapport, mais :
Il manque le champ hidden MAX_FILE_SIZE dans ton formulaire.
 
Voir http://www.php.net/manual/fr/features.file-upload.php pour plus de détails...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 03-10-2001 à 23:36:37    

Mara's dad a écrit a écrit :

Je sais pas si çà à un rapport, mais :
Il manque le champ hidden MAX_FILE_SIZE dans ton formulaire.
 
Voir http://www.php.net/manual/fr/features.file-upload.php pour plus de détails...  




 
Ca c'est pas grave.
 
Je vérifie la taille du fichier avant le move_uploaded_file
 
Non, je crois qu'il doit l'uploader dans un répertoire temp sur le serveur et qu'près je n'y ai pas accès à cause de la restriction.
 
J'avoue que je suis un peu  :??: avec cette histoire d'upload...

Reply

Marsh Posté le 04-10-2001 à 00:22:48    

essaye d'utiliser le chemin complet depuis la racine du serveur ,visible en faisant un phpinof()
 
en général /var/www/ ou un truc dans le genre.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 04-10-2001 à 01:26:41    

C'est bon, j'ai fini par trouver grâce au lien de Mara's dad! (lecture un peu fastidieuse mais bon)
 
En fait, il fallait utiliser les variables $HTTP_POST_FILES['userfile']['name'] et $HTTP_POST_FILES['userfile']['tmp_name'] .
 
Pour ceux que ça intéresse voici un code qui marche (le reste n'a pas changé) :
 

Code :
  1. // Pull out the information about this upload.
  2. // You don't need type or size unless you want them.
  3. $userfile = $HTTP_POST_FILES['userfile']['name'];
  4. $type = $HTTP_POST_FILES['userfile']['type'];
  5. $size = $HTTP_POST_FILES['userfile']['size'];
  6. $location = $HTTP_POST_FILES['userfile']['tmp_name'];
  7. // If the upload was successful, then move the tmp file.
  8. // Subsitute ./tmp/$userfile to whatever directory/file you want.
  9. // moveFailed() - whatever you want here to handle move failure.
  10. if($userfile and is_uploaded_file($location))
  11. { move_uploaded_file($location, "./tmp/$userfile" ) or moveFailed(); }


 
Je l'ai juste un peu modifié dans mon cas pour pouvoir tester les propriété de l'image uploadée...
 
Merci à vous  :hello:

Reply

Marsh Posté le 07-10-2001 à 12:24:47    

j'ai utilisé le même script que toi, Freekill, mais les varaiables $HTTP_POST_FILES['userfile']['size'] et $HTTP_POST_FILES['userfile']['tmp_name'] sont vides lorsque j'envoie le formulaire ....
 
et du coup, je ne sais pas si mon fichier a été  envoyé sur le serveur (et ou a t'il été envoyé surtout ??)

Reply

Marsh Posté le 07-10-2001 à 18:41:56    

tu as bien spécifié ENCTYPE="multipart/form-data" pour ton formulaire?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed