IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation et limitation de la Fonction Copy()


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 107
    Points : 55
    Points
    55
    Par défaut Utilisation et limitation de la Fonction Copy()
    Bonsoir,

    J'utilise la fonction copy() pour copier un fichier (une imge en occurrence) d'un endroit a un autre. Dans un champs de formulaire PHP je donne un fichier (une image) a uploder sur un site. J'utilise la fonction copy() pour copier le fichier temporaire vers un nouveau fichier auquel je donne un nom précis.

    En local je n'ai aucun soucie. En revanche, en production si j'ose dire, sur ma page perso, cette fonction ne fonctionne pas. J'ai le message d'erreur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Warning: copy() [function.copy]: open_basedir restriction in effect.
    File(/tmp/php_tmp/phpZKSnnH) is not within the allowed path(s):
    (/var/www/j/ji/jin/jinx.perso.neuf.fr/public_html/:/usr/lib/php5/:/var/sitesmutu)
    in /var/www/j/ji/jin/jinx.perso.neuf.fr/public_html/mediateque/media/process_add_dvd.php on line 42
    J'utilise la fonction copy() dans le contexte suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ...
    ...
    // dvdCover est le nom du champ d emon formulaire PHP
    $user_file= $_FILES['dvdCover']['tmp_name'];	
    $user_file_size= $_FILES['dvdCover']['size'];
    $user_file_type= $_FILES['dvdCover']['type'];
     
    $id = time();
    $FileNameImageOnServer = HEADER_DVD . $id . JPG_IMAGE_EXTENSION; // on ajoute l'extention .jpg
    $fileToCopy="../upload/" . "$FileNameImageOnServer";
     
    if (is_uploaded_file($user_file)) {
    	copy($user_file, $fileToCopy);
    ...
    ...
    }
    La ligne "copy($user_file, $fileToCopy);" génère l'erreur lorsque j'upload une image depuis mon propre PC vers ma page perso.

    Peut-on utiliser une autre fonction en remplacement ? Ou suis-je bloqué par mon hébergeur.

    Merci de toute aide.

    J.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut


    Après un upload, il faut utiliser la fonction adhoc :
    http://php.net/move_uploaded_file

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 107
    Points : 55
    Points
    55
    Par défaut
    Merci Mr N. Ca marche bien.

    En revanche, j'ai le warning suivant:

    Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/tmp/php_tmp/phpw1OOVH) is not within the allowed path(s): (/var/www/j/ji/jin/jinx.perso.neuf.fr/public_html/:/usr/lib/php5/:/var/sitesmutu) in /var/www/j/ji/jin/jinx.perso.neuf.fr/public_html/mediateque/media/process_add_dvd.php on line 46

    Est-ce que tu sais comment je peux le faire disparaitre proprement ?

    Je crois aussi que l'on peut désactiver affichage de warninng et uniquement l'affichage en faisant un truc comme "reporting WARNING" et je ne sais plus quoi.

    Merci.

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Je crois aussi que l'on peut désactiver affichage de warninng et uniquement l'affichage en faisant un truc comme "reporting WARNING" et je ne sais plus quoi.
    Losque tu est en phase de développement comme ceci, il n'y a aucun intérêt de désactiver les retours d'erreurs ... aucun !!!

    Si dans ta voiture il y a un voyant rouge concernant les freins, débranche tu ce voyant ? Ceci règlera t-il le problème ? Continu tu à rouler/freiner jusqu'à ???

    La réponse est en toute évidence non.
    Une vérification des freins s'impose et réparer/remplacer l'organe défectueux au besoin.

    Aussi, si tu désactive les retours d'erreurs, comment fais tu pour savoir si ton code ne comporte pas d'erreur ?

    open_basedir restriction in effect. File(/tmp/php_tmp/phpw1OOVH) is not within the allowed path(s)
    Le message d'erreur indique que :
    - Soit tu n'as pas les droits suffisant pour y déposer un fichier.
    - Soit le chemin/nom (le filename) n'est pas correcte. Je pencherais sur celle ci.
    Ce chemin /tmp/php_tmp/phpw1OOVH est il valide ?

    A savoir tout de même qu'il n'est pas utile de déposer ton fichier dans un répertoire temporaire, car il s'y trouve déjà dans un répertoire temporaire.
    Dépose le directement dans ton espace Web.


    Remets y ton code avec cette fonction move_uploaded_file()
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tout à fait d'accord sur le fait qu'il ne faut pas desactiver les warning et notices en phase de dev...

    Sinon quelle version de php utilises-tu?
    Un peu de lecture : http://bugs.php.net/bug.php?id=38934

Discussions similaires

  1. La fonction copy.
    Par nicocsgamer dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 22/04/2009, 13h32
  2. Utilisation de la fonction copy
    Par casho dans le forum Langage
    Réponses: 2
    Dernier message: 11/08/2007, 12h08
  3. utilisation de getdate() dans une fonction ?
    Par devdev dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/03/2005, 17h40
  4. Réponses: 16
    Dernier message: 21/02/2005, 17h20
  5. Utilisation de Getdate dans une fonction
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/11/2004, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo