URGENT problème avec copy() de PHP

URGENT problème avec copy() de PHP - PHP - Programmation

Marsh Posté le 11-07-2003 à 17:02:23    

Bonjour,
 
j'ai un problème urgent, je n'arrive pas à comprendre pourquoi mon script d'upload ne marche pas. Pourtant, il marche en local ?!?!?
 
 
Voilà mon script :
$adresse_source = "c:\aaaa.jpg";
copy($adresse_source,"http://www.univ-montp2.fr/~lcobs/images/image.jpg" );

 
 
Je l'ai beaucoup simplifié, mais c'est ça.
L'erreur, est : unable to open "c:\aaaa.jpg" à la ligne du copy()
 
Pourriez-vous m'aider, car je ne vois pas d'où provient l'erreur puisque je sais que le fichier aaaa.jpg situé dans c:/ existe bien.
 
Merci !

Reply

Marsh Posté le 11-07-2003 à 17:02:23   

Reply

Marsh Posté le 11-07-2003 à 17:04:34    

est-ce que l'utilisateur apache a droit d'accèder à c:??

Reply

Marsh Posté le 11-07-2003 à 17:05:51    

Bonne question !!!!
 
 
Je ne sais pas, mais puis-je le voir avec php_info() ???

Reply

Marsh Posté le 11-07-2003 à 17:08:00    

t'es sous nt ou 9x?
si t'es sous nt, regardes les droits du répertoire

Reply

Marsh Posté le 11-07-2003 à 17:09:08    

En local, je suis sur Win XP. Mais pour le serveur online, je sais pas !

Reply

Marsh Posté le 11-07-2003 à 17:09:40    

J'vais envoyer une requête pour avoir la réponse.

Reply

Marsh Posté le 11-07-2003 à 17:14:54    

Si vous voulez voir l'erreur exacte avec le phpinfo() allez : http://www.univ-montp2.fr/~lcobs/a [...] on/aaa.php

Reply

Marsh Posté le 11-07-2003 à 17:21:01    

a priori, le serveur serait plutot un unix/linux [:proy]  
donc c:\ c'est pas gagné ;)
met un chemin relatif pour voir

Reply

Marsh Posté le 11-07-2003 à 17:24:54    

Je suis entrain de tester avec un chemin relatif. Je répond dans 3 minutes.

Reply

Marsh Posté le 11-07-2003 à 17:33:53    

J'y arrive pas. Par contre si je met un chemin relatif exemple : images/titre.jpg j'ai pas d'erreur unable to open, mais j'ai par contre un erreur unable to create.
 
Mais unable to create est probablement dû à une mauvais adresse d'upload.
 
Vous avez pas une unité pour mon problème de départ, c'est à dire comment ne pas avoir le unable to open pour les fichiers du disque dur c:\.

Reply

Marsh Posté le 11-07-2003 à 17:33:53   

Reply

Marsh Posté le 11-07-2003 à 17:36:52    

petite question: "$adresse_source = "c:\aaaa.jpg";" est dans ton script sur le serveur??

Reply

Marsh Posté le 11-07-2003 à 17:41:18    

Je comprends pas bien ta question, mais si tu veux savoir si la ligne :
$adresse_source......
est dans le même fichier, alors c'est oui. Ce n'est pas un appel, et même en mettant  
copy("c:\aaaa.jpg","/~lcobs/image.jpg" );
ca ne marche pas.

Reply

Marsh Posté le 11-07-2003 à 17:43:58    

bah oui, c'est normal [:ddr555]
 
ton script s'exécute sur le serveur, donc il ne connaît pas c:
amha, tu devrais lire un petit tuto pour l'upload de fichier ;)
tu peux montrer le code complet?

Reply

Marsh Posté le 11-07-2003 à 17:47:07    

C'est ça le code complet :
copy("c:\aaaa.jpg","/~lcobs/image.jpg" );
 
 
Mais comment je peux faire alors, pour autoriser les uploads en provenance du c:\.
 
Merci de ton aide Dropsy

Reply

Marsh Posté le 11-07-2003 à 17:53:41    

de rien ;)
 
il faut que, dans un premier temps, tu crées un formulaire qui permet de sélectionner un fichier.
un ptit tuto:
http://www.toutestfacile.com/php/c [...] upload.php
ou
http://www.asp-php.net/tutorial/asp-php/upload.php

Reply

Marsh Posté le 11-07-2003 à 18:00:03    

Merci pour les adresses, je vais les lire.
 
Mais j'ai déjà créé un formulaire, avec une sélection file, et on choisi dans son disque dur le fichier souhaité. Je l'ai pas montré dans le code, parce que ça fait que compliquer.
Le code que j'ai montré ici est un exemple, avec le choix c:\aaaa.jpg comme chemin. Normalement ce chemin on le tape pas, il faut juste sélectionner le fichier avec le formulaire.
 
OUPS, j'sais pas si je suis clair ?!?!?!

Reply

Marsh Posté le 11-07-2003 à 18:04:36    

une fois que ta choisi un fichier et valider le formulaire, le fichier est envoyé sur le serveur, c'est ce fichier temporaire qu'il faut que tu copie, il est stocké dans $_FILES['userfile']['tmp_name']
 
 
http://www.php.net/features.file-upload

Reply

Marsh Posté le 11-07-2003 à 18:12:30    

et dans ce cas, ya plus k'a utiliser move_uploaded_file()

Reply

Marsh Posté le 11-07-2003 à 18:18:43    

Si je comprends bien, du fait que le formulaire a comme attribut : enctype="multipart/form-data" alors cela veut dire que les fichiers appelés par un champ file sont directement uploadés dans un répertoire temporaire, sans autres lignes de code ?!?
 
Donc après nous on a qu'à copier le fichier temporaire ?
 
Est-ce que c'est ça dropsy STP ?

Reply

Marsh Posté le 11-07-2003 à 18:20:13    

Wallman a écrit :

Si je comprends bien, du fait que le formulaire a comme attribut : enctype="multipart/form-data" alors cela veut dire que les fichiers appelés par un champ file sont directement uploadés dans un répertoire temporaire, sans autres lignes de code ?!?
 
Donc après nous on a qu'à copier le fichier temporaire ?
 
Est-ce que c'est ça dropsy STP ?


 
tout à fait, soit à la mains soit avec la fonction de yack

Reply

Marsh Posté le 11-07-2003 à 18:21:41    

MERCI BEAUCOUP, JE VAIS ESSAYER !


Message édité par wallman le 11-07-2003 à 18:22:10
Reply

Marsh Posté le 11-07-2003 à 18:26:01    

de rien :)

Reply

Marsh Posté le 11-07-2003 à 21:35:26    

J'EN AI MARRE !
 
J'ai essayé avec la fonction is_uploaded_file() et rename(), mais ça ne marche pas. Pourtant, j'ai entièrement copié/collé le code du tutorial.
 
Pourtant il y a une erreur :
Warning: Rename failed (Invalid cross-device link) in /home/www/lcobs/public_html/administration/fileupload.php on line 15
 
Voilà le code :
Fichier 1.php
<html>
    <body>
        <form enctype="multipart/form-data" action="fileupload.php" method="post">
            <input type="hidden" name="MAX_FILE_SIZE" value="100000">
            Transfère le fichier <input type="file" name="monfichier">
            <input type="submit">
        </form>
    </body>
</html>

 
 
 
Fichier fileupload.php
<html>
<body>
<?
print ($_FILES["monfichier"]["tmp_name"]."---".$_FILES["monfichier"]["name"]);
    $repertoireDestination = "images/";
    $nomDestination = $_FILES["monfichier"]["name"];
 
    // Pour raison de sécurité nous ajouterons aux fichiers
    // portant une extension .php .php3, l'extension .txt
    if (eregi(".php", $nomDestination)) {
        $nomDestination .= ".txt";
    }
     
    if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
        if (rename($_FILES["monfichier"]["tmp_name"],$repertoireDestination.$nomDestination))  
  {
            echo "Le fichier temporaire ".$_FILES["monfichier"]["tmp_name"].
                 " a été déplacé vers ".$repertoireDestination.$nomDestination;
        } else {
            echo "Le déplacement du fichier temporaire a échoué".
                 " vérifiez l'existence du répertoire ".$repertoireDestination;
       }          
    } else {
       echo "Le fichier n'a pas été uploadé (trop gros ?)";
    }
?>
</body>
</html>

 
 
 
!!! AIDEZ MOI S'IL VOUS PLAIT !!!

Reply

Marsh Posté le 11-07-2003 à 21:43:44    

C'est bon, j'ai trouvé un autre moyen, en mettant la fonction copy ça marche NIKEL !

Reply

Marsh Posté le 11-07-2003 à 21:52:43    

j'ai modifié:

$repertoireDestination = "./images/";


rajout de ./ pour le nom du dossier
 
et

copy($_FILES["monfichier"]["tmp_name"],$repertoireDestination.$nomDestination)


copy au lieu de rename
 
et ça marche chez moi (apache2 / php4.2.3) [:proy]
 
edit: le temps de bidouiller tes scripts, et [:grillaid] :D


Message édité par dropsy le 11-07-2003 à 21:54:47
Reply

Marsh Posté le 11-07-2003 à 21:55:16    

dropsy a écrit :

j'ai modifié:

$repertoireDestination = "./images/";


rajout de ./ pour le nom du dossier
 
et

copy($_FILES["monfichier"]["tmp_name"],$repertoireDestination.$nomDestination)


copy au lieu de rename
 
et ça marche chez moi (apache2 / php4.2.3) [:proy]
 
edit: le temps de bidouiller tes scripts, et grillé... :D

Reply

Marsh Posté le 11-07-2003 à 21:57:58    

Merci pour ta réponse !
 
Et merci pour tes réponses !           :bounce:  :bounce:  :na:  :sarcastic:  :sol:  :whistle:  :cry:  :sleep:  :pt1cable:  :love:  :heink:  :jap:  :??:  :p  :lol:  :hello:  :sweat:

Reply

Marsh Posté le 13-07-2003 à 03:10:58    

le fichier temporaire s'efface-t-il automatiquement quand le script est fini?

Reply

Marsh Posté le 13-07-2003 à 03:12:34    

avec move_uploaded_file oui comme son nom l'indique
 
si tu ne fais que le copier, il faut attendre qu'il soit effacé par ton hébergeur...
 

Reply

Marsh Posté le 13-07-2003 à 03:15:01    

et l'herbegeur fera ça quand? (je suis chez free) c'est un repertoire a la base du site?

Reply

Marsh Posté le 13-07-2003 à 03:28:41    

c dans un répertoire temporaire chez free
 
/tmp/ par exemple, qui est effacé automatiquement tous les x minutes
 
tu dois pouvoir afficher le chemin ou est stocké le fichier avec echo $_FILES['variable']['tmp_name'];

Reply

Marsh Posté le 13-07-2003 à 03:31:42    

ok... en clair c pas grave si je le supprime pas.

Reply

Marsh Posté le 13-07-2003 à 03:33:32    

et un truc que je me suis toujours demandé: comment se déroule l'upload? le navigateur affiche-t-il une barre de progression?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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