Page 1 sur 1

failed to open stream: HTTP wrapper does not support writeab

Posté : 07 juin 2005, 10:14
par airben
Bonjour,


J'ai realisé un formulaire dont lequel il y a la possibilité d'y joindre un fichier (piece jointe).
En local sa marche trés bien. Mais malheuresement des que je ne travail plus en local.Jai cette erreur.

Warning: move_uploaded_file(http://www.lesite.com/testweb/fichierre ... n-1950.rtf): failed to open stream: HTTP wrapper does not support writeable connections. in /home/sites/site50/web/testweb/valider.php on line 62

Warning: move_uploaded_file(): Unable to move '/tmp/phpgJzymb' to 'http://www.lesite.com/testweb/fichierre ... n-1950.rtf' in /home/sites/site50/web/testweb/valider.php on line 62

Code : Tout sélectionner

if (!empty($_FILES['fich']['size'])) { //On récupère la taille, le nom et le nom du fichier temporaire $f1_size = $_FILES['fich']['size']; $f1_name = $_FILES['fich']['name']; $f1_tmpname = $_FILES['fich']['tmp_name']; //Récupération de l'extension du fichier (on prend ce qui suit le dernier point et on le met en minuscule $ext = strtolower(substr($f1_name,strrpos($f1_name, ".")+1)); //Création du tableau des extensions acceptées $valides = array("rtf","doc"); //On vérifie la taille et le type de fichier if ($f1_size > 100000) { $infos .= "- Le fichier est trop volumineux!<br>\n"; } if(!in_array($ext,$valides)) { $infos .= "- Ce type de fichier n'est pas accepté!<br>\n"; } //Si tout est bon (aucune erreur dans $infos), on déplace le fichier if ($infos == '') { $arbo="http://www.lesite.com/testweb/fichierrecu/"; } $nomDestination = "$nom-$prenom-$ddn_a.$ext"; move_uploaded_file($f1_tmpname,$arbo . $nomDestination) or $infos .= "- Impossible d'enregistrer le fichier, contacter le webmaster!<br>n"; // ------>>> ici c'est la ligne 62 if ($infos == '') { $sql = "INSERT INTO formu VALUES('','$nom','$prenom','$code','$ville')"; mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error()); mysql_close(); include("merci.htm"); } } //else //{ // $infos .= "- Vous devez sélectionner un fichier à uploader!<br>n"; //} if ($infos != ''){ echo $infos; } ?>
Si quelqu'un peut me dire ce qui se passe et quoi faire ?? :? :?
MERCI

Posté : 07 juin 2005, 10:17
par Cyrano
Vérifie les droits en écriture de ton répertoire de destination (CHMOD)

Posté : 07 juin 2005, 10:26
par sadeq
//Si tout est bon (aucune erreur dans $infos), on déplace le fichier
if ($infos == '')
{
$arbo="http://www.lesite.com/testweb/fichierrecu/";
}
Ton chemin de detination commence par le protocole http ce qui peut entrer en conflit avec les restrictions d'accès fixées sur www/http .

Mais, puisque c'est le serveur qui effectue l'upload vers une destination qui se trouve sur lui même il vaut mieux utiliser un chemin file absolu ou relatif. exemple "c:/dossier" ou "./dossier" ou mieux encoe utiliser une destination FTP

Posté : 07 juin 2005, 10:49
par Invité
Bonjour

Comment faire pour utiliser une destination FTP :?

Posté : 07 juin 2005, 11:17
par Invité
Jai changé les droit (777) du repertoire de distination.

J'ai a nouveau cela comme erreur; :(

Warning: move_uploaded_file(../web/testweb/fichierreçu/jean-batist.rtf): failed to open stream: No such file or directory in /home/sites/site50/web/testweb/valider.php on line 62

Warning: move_uploaded_file(): Unable to move '/tmp/phpASaf8n' to '../web/testweb/fichierreçu/jean-batist.rtf" in /home/sites/site50/web/testweb/valider.php on line 62
- Impossible d'enregistrer le fichier, contacter le webmaster!

Posté : 07 juin 2005, 11:18
par Invité
Jai changé les droit (777) du repertoire de distination.

J'ai a nouveau cela comme erreur; :(

Warning: move_uploaded_file(../web/testweb/fichierreçu/jean-batist.rtf): failed to open stream: No such file or directory in /home/sites/site50/web/testweb/valider.php on line 62

Warning: move_uploaded_file(): Unable to move '/tmp/phpASaf8n' to '../web/testweb/fichierrecu/jean-batist.rtf" in /home/sites/site50/web/testweb/valider.php on line 62
- Impossible d'enregistrer le fichier, contacter le webmaster!

Posté : 07 juin 2005, 11:19
par Invité
Jai changé les droit (777) du repertoire de distination.

J'ai a nouveau cela comme erreur; :(

Warning: move_uploaded_file(../web/testweb/fichierrecu/jean-batist.rtf): failed to open stream: No such file or directory in /home/sites/site50/web/testweb/valider.php on line 62

Warning: move_uploaded_file(): Unable to move '/tmp/phpASaf8n' to '../web/testweb/fichierrecu/jean-batist.rtf" in /home/sites/site50/web/testweb/valider.php on line 62
- Impossible d'enregistrer le fichier, contacter le webmaster!

Posté : 07 juin 2005, 11:27
par Fresh
775 devrait etre suffisant non?

pour ne pas que n'importe qui puisse faire n'importe quoi sur ton repertoire quand meme.

Posté : 07 juin 2005, 11:39
par sadeq
Il faut respecter les spécifications de sécurité attribuées au rôles de chaque protocole voyons ne divergez pas.
Rendez à Cesar ce qui revient à Cesar.
On ne doit pas tolérer l'écriture d'une ressource dans une destination HTTP.
Vous programmez pour le coté Serveur, le script doit donc écrire soit dans un chemin local au serveur ou rediriger la ressource via FTP où le gestionnaire FTP a déja préparé un nid d'accueil bien protégé.
Voici un exemple de upload orienté FTP:
<?php 
//subitFile : bouton submit du formulaire d'upload
//fichier_transféré :  nom de la zone file du formulaire d'upload
if (!isset($_POST["submitFile"]) || !is_uploaded_file($_FILES["fichier_transféré"]["tmp_name"])) exit();

$ftp_server='xxx.xxx.xxx.xxx'; 
$ftp_user_name='utilisateur'; 
$ftp_user_pass='mot de passe'; 
//ftproot : point d'entrée prévu pour l'utlisateur (dossier par défaut)
//mes fichiers : un dossier existant pour accueillir des upload
$destination_file="ftproot/mes fichiers/".$_FILES['fichier_transféré']['name']; 
$source_file=$_FILES['fichier_transféré']['tmp_name']; 

// Mise en place d'une connexion basique 
$conn_id = ftp_connect($ftp_server); 

// Identification avec un nom d'utilisateur et un mot de passe 
echo "<br>Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name"; 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// Vérification de la connexion 
if ((!$conn_id) || (!$login_result)) {
        echo "<br>La connexion FTP a échoué !"; 
        exit(); 
    } else { 
        echo "<br>Connexion effectuée..."; 
    } 

// Chargement d'un fichier 
//le script fait un put au nom de l'utilisateur connecté 
//ce dernier doit avoir le droit d'écriture dans la destination
echo "<br>Chargement de $source_file vers $ftp_server en tant que $destination_file"; 
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// Vérification du status du chargement 
if (!$upload) { 
        echo "<br>Le chargement FTP a échoué!"; 
    } else { 
        echo "<br>Le chargement FTP a réussi!";         
    } 
	
// Fermeture du flux FTP 
ftp_quit($conn_id);               
?> 

Posté : 07 juin 2005, 14:51
par Invité
UN GRAND MERCI A VOUS TOUS ,
Mon probléme etais du a un probleme de chemin et des droits du repertoire.

OUFFFF sa fait du bien quand sa marche , je vous raconte pas ... :lol:
MERCI