Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2011, 16h26   #1
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
Par défaut Copie de fichier

Bonjour,
Je cherche à copier des fichier locaux vers un autre répertoire local. Ca marche pour une partie des fichier mais pour d'autres non :
Leur nom comporte des caractères spéciaux, voici une petite liste : []ó()¢&ãé
Le chemin est correct car quand je copie le chemin dans un logiciel connaissant le format, ça marche.
J'ai essayé avec la fonction copy() puis system('cp ...') puis exec()
Des idées ?

PS : toute les opérations ont lieu de ext3 vers ext3 FS.
Je suis sous Ubuntu 10.04 x64
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 18h36   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Tu as vérifié les droits ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 18h54   #3
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Citation:
Envoyé par smarties Voir le message
Leur nom comporte des caractères spéciaux, voici une petite liste : []ó()¢&ãé
En encodant le nom des fichiers à l'aide de urlencode() ou rawurlencode() ?

Code :
$destination = $repertoire . rawurlencode($fichier);
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 00h12   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 234
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 234
Points : 1 554
Points : 1 554
En même temps si tes fichiers sont destinés à être sur un serveur un jour, tu devrais supprimer ces caractères spéciaux sinon tu vas vers de copieuses complications
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 18h18   #5
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
J'ai oublié de préciser mais j'utilise des chemin pour mes fichiers de cette forme :
/dossier 1/dossier 2/dossier N/un fichier parmi d'autres.ext
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 18h21   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par smarties Voir le message
J'ai oublié de préciser mais j'utilise des chemin pour mes fichiers de cette forme :
/dossier 1/dossier 2/dossier N/un fichier parmi d'autres.ext
avec copy et exec y'a quoi comme erreur ? les dossiers existes sur la copie ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 12h12   #7
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
J'ai ce message d'erreur :
Warning: copy(/media/music/MP3/Zouk/Kizomba/No1 Kizomba vol 2/CD1/03 Caló Pascoal - Titiriti.mp3) [function.copy]: failed to open stream: No such file or directory in /home/me/public_html/quickplaylist/step4.php on line 49

Quand je copie le chemin et que j'ouvre le fichier dans Rythmbox ou Amarok, pas de problèmes.

Tous mes dossiers ont les droits rwxx-xr-x et les fichier rw-r--r
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 20h52   #8
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Je pense que le répertoire source devrait être
Code :
/home/me/public_html/media/music/MP3/Zouk/Kizomba/No1 Kizomba vol 2/CD1/
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 09h29   #9
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
non, mes données sont sont sur un autre disque, c'est bien /media/music/...
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 10h33   #10
Membre régulier
 
Avatar de Stopher
 
Homme christophe de saint leger
Responsable de service informatique
Inscription : juin 2004
Messages : 105
Détails du profil
Informations personnelles :
Nom : Homme christophe de saint leger
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie

Informations forums :
Inscription : juin 2004
Messages : 105
Points : 82
Points : 82
Envoyer un message via MSN à Stopher Envoyer un message via Skype™ à Stopher
Salut ,

Code :
1
2
 
/media/music/MP3/Zouk/Kizomba/No1 Kizomba vol 2/CD1/03 Caló Pascoal - Titiriti.mp3
C'est la source ou la destination ?

Sinon , essaye avec une autre méthode :

stream_copy_to_stream

Presque aussi simple à mettre en place , et tu en sauras peut être plus sur ton problème.

Mais c'est vrai que les caractères spéciaux ou les espaces peuvent poser problème :s

Ch.
__________________
Lindev.fr
Stopher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 13h55   #11
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
Code :
1
2
3
            $a=fopen($src,'r');
            $b=fopen($dest,'w');
            stream_copy_to_stream($a, $b);
J'ai ce résultat :
Citation:
Warning: fopen(/media/music/MP3/Zouk/Kizomba/No1 Kizomba vol 2/CD1/03 Caló Pascoal - Titiriti.mp3) [function.fopen]: failed to open stream: No such file or directory in /home/me/public_html/quickplaylist/step4.php on line 50
Quelle horreur ces caractères spéciaux !
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h03   #12
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Et si tu encodes aussi le nom du fichier avec rawurlencode() ?

Par exemple...
Code :
1
2
3
4
5
6
$repertoire='/media/music/MP3/Zouk/Kizomba/No1 Kizomba vol 2/CD1/';
$fichier='03 Caló Pascoal - Titiriti.mp3';
 
$src = $repertoire . rawurlencode($fichier);
 
$a=fopen($src,'r');
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h07   #13
Membre régulier
 
Avatar de Stopher
 
Homme christophe de saint leger
Responsable de service informatique
Inscription : juin 2004
Messages : 105
Détails du profil
Informations personnelles :
Nom : Homme christophe de saint leger
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie

Informations forums :
Inscription : juin 2004
Messages : 105
Points : 82
Points : 82
Envoyer un message via MSN à Stopher Envoyer un message via Skype™ à Stopher
Quel est l'encodage par défaut de ton système ?

sous debian ou Ubuntu dans un terminal entre la cmd : "locale"


Comment fais tu pour récupérer la source du fichier à copier ? voir s'il n'y a pas de conversion iso <-> utf-8 entre temps

Ch.
__________________
Lindev.fr
Stopher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h08   #14
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
Résultat de la commande locale :
Citation:
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=
j'ai résolu le problème en encodant en UTF8 les chemins :
Code :
copy(utf8_encode($src), utf8_encode($dest.basename($src)));
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h09   #15
Membre régulier
 
Avatar de Stopher
 
Homme christophe de saint leger
Responsable de service informatique
Inscription : juin 2004
Messages : 105
Détails du profil
Informations personnelles :
Nom : Homme christophe de saint leger
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie

Informations forums :
Inscription : juin 2004
Messages : 105
Points : 82
Points : 82
Envoyer un message via MSN à Stopher Envoyer un message via Skype™ à Stopher
__________________
Lindev.fr
Stopher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h21   #16
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
Y a-t-il un moyen de savoir l'encodage des noms de fichiers ou le système de fichier ?
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h24   #17
Membre régulier
 
Avatar de Stopher
 
Homme christophe de saint leger
Responsable de service informatique
Inscription : juin 2004
Messages : 105
Détails du profil
Informations personnelles :
Nom : Homme christophe de saint leger
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie

Informations forums :
Inscription : juin 2004
Messages : 105
Points : 82
Points : 82
Envoyer un message via MSN à Stopher Envoyer un message via Skype™ à Stopher
Tu as normalement : mb_detect_encoding

Peut être existe t-il d'autres méthodes ... ? mais normalement celle-ci devrait convenir .

Ch.
__________________
Lindev.fr
Stopher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 14h42   #18
Membre habitué
 
Homme Sébastien
Développeur informatique
Inscription : août 2003
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : août 2003
Messages : 252
Points : 120
Points : 120
Merci
smarties est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h59.


 
 
 
 
Partenaires

Hébergement Web