failed to open stream: HTTP wrapper does not support writeab

airben
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 10:14

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

Mammouth du PHP | 19672 Messages

07 juin 2005, 10:17

Vérifie les droits en écriture de ton répertoire de destination (CHMOD)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 juin 2005, 10:26

//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
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 10:49

Bonjour

Comment faire pour utiliser une destination FTP :?

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 11:17

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!

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 11:18

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!

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 11:19

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!

Eléphanteau du PHP | 33 Messages

07 juin 2005, 11:27

775 devrait etre suffisant non?

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 juin 2005, 11:39

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);               
?> 
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 14:51

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