Vous voyez avec Microsoft qui, bien que le noyau de Windows soit capable d'écrire des chaines unicode jusqu'a ~32000 caractères (chemin + nom de fichier), n'a toujours rien fait pour que l'on puisse y accéder et limite à 256 caractères (chemin complet) les outils Windows qui accèdent aux fichiers.
Ce qui est très paradoxal, parce que sur un réseau, par exemple, un utilisateur peu créer une arborescence dityrambique ou enregistrer avec Outlook des mails où le nom (qui est l'objet du mail ) dépasse les 256 caractères, le système enregistre mais n'est plus capable d'y accéder !
En fait Microsoft fait la sourde oreille sur ce défaut qui génère bien des problèmes aux administrateurs de serveur.
On ne peut rien faire donc, le chemin d'accès réseau est lui aussi impacté par cette restriction ? Il n'y a pas des programmes windows à part Outlook qui ont reussi à contourner cette limitation ?
Outlook utilise d'autres technique non pas pour dépasser, mais pour contourner cette restriction. En fait, outlook utilise des variables d'environnement qui sont donc automatiquement convertis par de système. De même, il utilise la séparation entre le chemin et le nom de fichier qu'il concatène par la suite.
En gros, il est absurde de comparer outlook et php puisque l'un est fait spécifiquement pour Windows et PAR Microsoft alors que PHP est multi plateforme.
A vous de mettre les limites lors de la saisie du formulaire ou d'adapter votre script. Ou bien passez sous linux ^^
> En gros, il est absurde de comparer outlook et php puisque l'un est fait spécifiquement pour Windows et PAR > Microsoft alors que PHP est multi plateforme.
Justement, le fait que les versions utlérieures de PHP compilées avec VC9 dans Wamp server 2.2E peut être qu'un patch à été édité entre temps pour justement ce genre de cas ?
Après, je ne vois pas l'absurdité, puisqu'il existe un partenariat MS et Zend pour founir un exe php performant en intégrant peut être un contournement du problème
PHP étant multi-plateforme et Outlook non, Outlook peut se permettre d'utiliser des méthodes de fonctionnement uniquement destinés à Windows. De ce fait, c'est sur cette différence fondamentale entre outlook et php que je peux affirmer que le comparatif est absurde puisque leurs buts et usages sont totalement différents. Ceci dit, c'est mon point de vue. Pour moi, ça revient à comparer une maison et un avion, et dire qu'une maison, c'est pourri, car ça ne vole pas. Non, ce n'est juste pas le même usage ni la même destination, ni la même conception.
De plus, la limitation à 255 caractères ne vient pas de PHP, mais bien de Windows. Du coup, pour réussir à dépasser cette limite, il faut "Bricoler" ce qui n'est pas du gout de la team PHP.
Après, je répète, c'est ma vision personnelle des choses.
J'ai tenté de voir malgré tout si une solution avait été trouvée. Comme un encodage en base64 ou autre, histoire de raccourcir artificiellement le chemin, mais je n'ai rien trouvé pour le moment.
Essayez avec des chemins du genre "\\D:\dossier1\dossier2\nom_très_très_très_long.ext". Théoriquement ne peut fonctionner qu'avec des chemins absolus complets, c'est-à-dire comprenant la lettre d'unité de disque.
M'enfin comme aurait pu dire Gaston, je ne suis pas certain que ça puisse fonctionner. Un article Microsoft MSDN explique cette limitation : [msdn.microsoft.com]
Il y est bien expliqué le « truc » de "\\?\D:\very long path". Le seul problème est que je n'ai pas TROUVÉ OÙ ni QUOI accepte cette syntaxe !
Déjà, il est impossible de créer un chemin, même morceau par morceau, de plus de 256 caractères ; en ligne de commande, j'ai ,enchainé les MD dossier1, CD dossier1, MD dossier2, CD dossier2 et ainsi de suite; invariablement, on arrive à l'erreur Nom de fichier ou extension trop long.
merci pour votre aide, j'ai essayé mais malheuresement l'erreur persiste avec \\?\. Nous utilson Php une application GED où appramment le client possède une grosse arborescence.
Arrivez-vous à accèder avec un favori reseau et un chemin complet de plus de 256 cars. ? Peut-être la solution ?
C'est vraiment nul cette restriction ;-(
Merci encore
Modifie 1 fois. Derniere modification le 16/01/2013 à 18:31 par laurent_h.