Lien ver pptx, docx, ... => Erreur 404

Eléphanteau du PHP | 12 Messages

06 févr. 2013, 11:50

Bonjour,

J'ai recement développé un site permettant de gérer un extranet, sur celui-ci j'ai besoin dans la partie "frontend" de placer des liens vers les fichiers uploadés pour les rendre accessibles aux visiteurs.

Mon problème est que dès qu'un fichier porte l'extension "x" des fichier MS Office (docx, pptx, ...), le lien vers ceux-cis renvoie une 404.

Pourtant le fichier est bien présent sur le serveur, et à la bonne adresse. Lorsque je le telecharge via FTP, il s'ouvre correctement dans Word/Pwerpoint,etc...

Les autres types de fichiers (pdf, doc, png, jpg, ...) fonctionnent correctement.

Est-ce que quelqu'un aurait une piste quant à ce qui provoque cette erreur ?

Merci d'avance

Gecko

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2013, 12:41

Quand tu listes les fichiers du dossier vois-tu ces dit fichiers ?
Utilises-tu un système de téléchargement via un script et un header ?

Eléphanteau du PHP | 12 Messages

06 févr. 2013, 13:06

Quand tu listes les fichiers du dossier vois-tu ces dit fichiers ?
Qu'entend tu par lister ?
Mon arborescence de fichier est représentée en BDD.
L'URL générée par celle-ci correspond avec l'emplacement du fichier sur le serveur (j'ai bien vérifié).
Utilises-tu un système de téléchargement via un script et un header ?
Non lien direct vers le fichier du genre :

Code : Tout sélectionner

<a href="monsite.com/filesystem/3/8/38/fichier.docx" target="_blank">Le fichier</a>

Eléphant du PHP | 130 Messages

06 févr. 2013, 13:32

Le répertoire et le fichier ont ils les bon droit sur le serveur ?

Eléphant du PHP | 245 Messages

06 févr. 2013, 14:24

Si il s'agit d'un dowlnload, peut être faut-il utiliser les bon content-Type dans la donction header() :

http://stackoverflow.com/questions/4212 ... x-pptx-etc

Sinon, le problème vient peut être plus du navigateur que du serveur...

Eléphanteau du PHP | 12 Messages

06 févr. 2013, 14:58

Le répertoire et le fichier ont ils les bon droit sur le serveur ?
Oui, car pour les autres extensions de fichier (pdf,png,jpg) cela fonctionne.

Se pourrait-il que le problème vienne de la config du serveur apache ? (je n'ai aucun moyen de le verifier car pas d'infos de l'hebergeur)
Si il s'agit d'un dowlnload, peut être faut-il utiliser les bon content-Type dans la donction header() :
Le lien est un lien direct vers le fichier, je ne peut pas utiliser la fonction header.
Sinon, le problème vient peut être plus du navigateur que du serveur...
Il serait étonnant que cela vienne du navigateur étant donné que j'ai essayé sur plusieurs PC/navigateurs et le problème est toujours le même.

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2013, 16:10

Tu as réellement une succession de dossier nommés par des chiffres dans ton filesystem ? Ce n'est pas une réécriture d'url ?

On est bien d'accord que si tu utilises le même lien mais que si tu renommes ton fichier via ftp avec une autre extension tu arrives à le télécharger ?

Eléphanteau du PHP | 12 Messages

06 févr. 2013, 20:35

Tu as réellement une succession de dossier nommés par des chiffres dans ton filesystem ? Ce n'est pas une réécriture d'url ?
Oui vu qu'ils sont liés à ma BDD.
On est bien d'accord que si tu utilises le même lien mais que si tu renommes ton fichier via ftp avec une autre extension tu arrives à le télécharger ?
Pas besion de le renommer : par FTP je peut télécharger le fichier docx et le lire sur mon PC sans le renommer.

Je viens de constater dans l'erreur 404 :
HTTP Error 404 - File or directory not found.
Internet Information Services (IIS)
Et j'ai vu que les MIME docx, pptx, etc... n'étaient présent qu'à partir de la version 7 d'IIS. Est-ce que cela pourrait venir du serveur IIS qui ne serait pas à jour ? Comment connaitre la version utilisée par mon hébergeur ?

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2013, 22:03

Peut importe le serveur, s'il ne connait pas le type mime il envoie en binary.

Mais tu as joliment éludé mes questions au fait. :lol:
Le chemin n'a rien à voir avec la BDD. Je repose donc ma question.
Quand tu vas sur ton ftp as-tu cette succession de dossier à nom numérique ? (bien que je suppose que oui sinon...)

Ensuite mon autre phrase n'était pas un test en l'air...
Renommes moi cette extension et tentes de le télécharger...

Ou sinon nous embêtes pas et créer un compte ftp pour chacun de tes visiteurs. :mrgreen:

Eléphanteau du PHP | 12 Messages

06 févr. 2013, 22:17

Mais tu as joliment éludé mes questions au fait.
Juste mal comprise... désolé
Le chemin n'a rien à voir avec la BDD. Je repose donc ma question.
Quand tu vas sur ton ftp as-tu cette succession de dossier à nom numérique ? (bien que je suppose que oui sinon...)
Si car la suite de numero correspond aux ids des dossiers parents stockés en BDD, qui est aussi utilisée lors de la création des fichiers/dossiers.
L'URL générée correspond bien à l'emplacement du fichier sur le serveur à savoir http://monsite.fr/filesystem/3/8/38/fichier.docx correspond bien à /filesystem/3/8/38/fichier.docx sur le FTP.
Renommes moi cette extension et tentes de le télécharger
Le problème est de télécharger des docx, le but n'est pas de forcer les utilisateurs à uploader des .doc.
Et de toute façon un fichier .docx n'est pas encodé comme un .doc, en le renommant en .doc le fichier devient corrompu.

Sinon les autres extensions (pdf,png,jpg,etc,...) fonctionnent correctement.

J'éspère avoir cette fois répondu à tes questions :D

ViPHP
xTG
ViPHP | 7331 Messages

07 févr. 2013, 09:58

Je m'en fiche qu'il soit corrompu ou autre...
Le test vise à voir si tu auras aussi une erreur 404...
On va se retourner la balle longtemps ? :P

As-tu un .htaccess qui traîne par hasard par la même occasion ?

Eléphanteau du PHP | 12 Messages

08 févr. 2013, 09:07

Sans vouloir y mettre de la mauvaise volonté :
Sinon les autres extensions (pdf,png,jpg,etc,...) fonctionnent correctement.
Donc non si je le renomme je n'aurais pas d'erreur 404 mais un fichier inutilisable...
J'ai renommé un pptx en ppt et il se télécharge normalement, juste que j'ai un fichier corrompu à la sortie car pas bonne extension.
Avant de gueuler lis mes réponses.

J'ai bien un .htaccess :

Code : Tout sélectionner

ErrorDocument 404 /index.php RewriteEngine on RewriteRule ^Connexion.html* login.php [NC,L] ...
Les lignes suivantes sont du même style que la première et ne touchent pas aux chemins des fichiers à télécharger si c'est ce qui t'inquiète.

ViPHP
xTG
ViPHP | 7331 Messages

08 févr. 2013, 12:39

Je ne te gueule pas dessus...
Et je ne peux pas savoir que les autres extensions ne sont pas d'autres fichier mais bel et bien le fichier incriminé que tu as renommé...

C'est tout de même inquiétant ton affaire.
Si tu tentes de faire un fopen() sur ce chemin y arrives-tu ?

Au final je pense qu'il faudra contacter ton hébergeur pour avoir une solution, car il semble évident que cela ne vient pas de ton script ni de ton htaccess.

Eléphanteau du PHP | 12 Messages

08 févr. 2013, 12:42

Ok merci de ton aide je me doutais que ça venait de l'hebergeur...
Je viens de constater dans l'erreur 404 :
HTTP Error 404 - File or directory not found.
Internet Information Services (IIS)
Et j'ai vu que les MIME docx, pptx, etc... n'étaient présent qu'à partir de la version 7 d'IIS. Est-ce que cela pourrait venir du serveur IIS qui ne serait pas à jour ? Comment connaitre la version utilisée par mon hébergeur ?

ViPHP
xTG
ViPHP | 7331 Messages

08 févr. 2013, 14:03

Toujours est-il que ce n'est pas un souci de type MIME non géré.
Plutôt de liste d'extension bloqué par ton hébergeur.

Car un fichier se télécharge au pire en mode binary.
Sinon bonjour la galère si pour pouvoir télécharger un fichier il faut mettre à jour son serveur avec la liste exhaustive de tous les types MIME...