Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur avec move_upload_file

Probleme avec HTTP

    25 novembre 2021 à 19:21:31

    Bonjour,

    J'ai crée un site web en PHP avec un système d'article mais je n'arrive pas a uploader les images dans un dossier "miniatures". Mon fichier de rédaction est situé dans un espace admin ( .htaccess donc ... ) et le dossier miniatures sur la première branche du site.

    Lorsque j'utilise la fonction, j'obtiens ça :

    Warning: move_uploaded_file(http://monsite.com/fr/miniatures/16.jpg): Failed to open stream: HTTP wrapper does not support writeable connections in /home/cycling/www/fr/admin/redaction.php on line 22
    
    Warning: move_uploaded_file(): Unable to move "/home/cycling/admin/tmp/php7g580s" to "http://monsite.com/fr/miniatures/16.jpg" in /home/cycling/www/fr/admin/redaction.php on line 22

    Voici mon code de redaction.php

    if(isset($_POST['article_titre'], $_POST['article_contenu'])) {
    	   if(!empty($_POST['article_titre']) AND !empty($_POST['article_contenu'])) {
    	      
    	      $article_titre = htmlspecialchars($_POST['article_titre']);
    	      $article_contenu = htmlspecialchars($_POST['article_contenu']);      
    	        var_dump($_FILES);
    	        var_dump(exif_imagetype($_FILES['miniature']['tmp_name']));
    	         $ins = $bdd->prepare('INSERT INTO cycling_articles (titre, contenu, date_time_publication) VALUES (?, ?, NOW())');
    	         $ins->execute(array($article_titre, $article_contenu));
    	         $lastid = $bdd->lastInsertId();
    	         
    	         if(isset($_FILES['miniature']) AND !empty($_FILES['miniature']['name'])) {
    	            if(exif_imagetype($_FILES['miniature']['tmp_name']) == 2) {
    	               $chemin = 'http://monsite.com/fr/miniatures/'.$lastid.'.jpg';
    	               move_uploaded_file($_FILES['miniature']['tmp_name'], $chemin);
    	            } else {
    	               $message = 'Votre image doit être au format jpg';
    	            }
    	         }
    	         $message_reussite = 'Votre article a bien été posté, cliquez <a href="http://monsite.com/fr/article.php?id='.$lastid.'">ici</a> pour voir le resultat';
    	       
    	      }
    	    else {
    	      $message = 'Veuillez remplir tous les champs';
    	   }
    	}
    	?>
    	<!DOCTYPE html>
    	<html>
    	<head>
    	   <title>Rédaction</title>
    	   <meta charset="utf-8">
    	</head>
    	<body>
    	   <form method="POST" enctype="multipart/form-data">
    	      <input type="text" name="article_titre" placeholder="Titre" /><br /><br />
    	      <textarea name="article_contenu" placeholder="Contenu de l'article" rows="8" cols="40"></textarea><br />
    	      <input type="file" name="miniature">
    	      <input type="submit" value="Envoyer l'article" />
    	   </form>
    	   <br />
    	   <?php if(isset($message)) { echo $message; } 
    	   if (isset($message_reussite)) {
    	   	echo $message_reussite;
    	   }?>
    	</body>
    	</html>


    J'ai compris que c'est du au protocole HTTP mais comment résoudre ce probleme ?

    Merci d'avance

    -
    Edité par PaulusCaesar 25 novembre 2021 à 19:22:19

    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2021 à 22:35:34

      Bonjour le message d'erreur à l'air d'indiqué que la fonction move_upload_file ne supporte pas une URL en tant que chemin elle attend surement un chemin absolue vers un dossier.

      Pour réglé le problème normalement tu doit pouvoir utilisé un chemin absolue vers le dossier dans le quel tu souhaites stocké ton fichier du genre:

      <?php
      
      // $chemin = 'http://monsite.com/fr/miniatures/'.$lastid.'.jpg';
      $chemin = __DIR__ . '/miniatures' . $lastid . '.jpg';
      



      • Partager sur Facebook
      • Partager sur Twitter

      suggestion de présentation.

        26 novembre 2021 à 18:50:07

        Bonjour, j'ai deja essayé mais comme le sous-dossier miniatures et dans le dossier admin. Lorsque j affiche l image, on me demande de se connecter ...

        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2021 à 17:49:13

          Rebonjour si tu ne veut pas que l'image soit dans le dossier admin tu peut la mettre ailleurs, le chemin que je t'ai donné dans le code d'exemple était illustratif, par exemple si tu ton fichier PHP  qui fait le traitement de l'image et situé à la racine du dossier admin tu pourrais indiqué comme chemin:

          <?php
           
          // $chemin = 'http://monsite.com/fr/miniatures/'.$lastid.'.jpg';
          $chemin = __DIR__ . '/..//miniatures' . $lastid . '.jpg';

          Là où /../ sert à remonté dans le dossier parent.

          • Partager sur Facebook
          • Partager sur Twitter

          suggestion de présentation.

            28 novembre 2021 à 18:56:42

            Bonjour, cela ne marche tjrs pas ....
            • Partager sur Facebook
            • Partager sur Twitter

            Erreur avec move_upload_file

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown