[RESOLU] Problème d'extrapolation de nom de fichier pdf

Chris69
Invité n'ayant pas de compte PHPfrance

10 janv. 2016, 23:21

Bonsoir,

Mon site, développé en php, appel des pages pdf par le biais d'une variable. Une routine récupère le contenu d'une variable et appel un fichier pdf (dont le nom est le contenu de la variable).

Après quelques mois de fonctionnement j'ai constaté que le nom du fichier, si ce dernier n'était pas présent sur le serveur, était remplacé par le nom le plus approchant d'un fichier pdf présent. Les noms des fichiers sont des références numérique.

EX : Une variable renvoie "7248". L'equivalent pdf n'existe pas. Par conre le 7249.pdf étant présent sur le serveur, c'est celui-ci qui est chargé.

Je pensais que l'orthographe et la casse des noms de pages était important.

Que penser de ce problème et comment y remedier ?

Mammouth du PHP | 2703 Messages

10 janv. 2016, 23:35

c'est apache qui, selon sa configuration, ne retourne pas une 404 quand il y a une ressource proche de l'url demandée. mais je n'arrive pas à mettre la main sur une page qui le dit.

Chris69
Invité n'ayant pas de compte PHPfrance

11 janv. 2016, 00:32

Hum... un problème de config. J'y pensai un peu !
Cela devrait pouvoir être modifié alors ?
Je ne sais pas quels mots de recherche employer et je n'ai jamais été dans l'ini de php.

Aurais-tu des piste à ce sujet ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 janv. 2016, 15:12

Bonjour,

Je n'ai jamais entendu parler d'une configuration d'apache qui permettrait de servir un fichier avec "le nom le plus approchant" d'un fichier existant.
A mon avis, c'est davantage ton script qui doit faire cela mais sans le connaitre difficile de te dire sur quels critères.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2703 Messages

11 janv. 2016, 16:24

http://www.urlrewriting.fr/scripts39-Apache.htm
mais cela semble ne concerner que l'extension, et non le nom.

Chris69
Invité n'ayant pas de compte PHPfrance

12 janv. 2016, 12:30

Oui effectivement, cela concerne l'extention.

En fait mon developpement est tout simple. Je crée un lien avec une $variable.pdf. Au survol du lien, on a bien le bon nom de fichier pdf et lorsqu'on active ce lien, c'est une page d'un fichier pdf au nom approchant qui est chargée (lorsque le pdf n'existe pas). Lorsque le pdf existe, la page du bon fichier s'ouvre !

Mammouth du PHP | 1967 Messages

12 janv. 2016, 12:56

Es tu en local ou sur un serveur ?

Si tu sais test ton script sur un autre serveur pour voir si tu as le même comportement.

Es tu sur de la totalité de ton script php que ce n'est pas lui qui a une fonction cachée ?

As tu un script de récupération de 404 ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Chris69
Invité n'ayant pas de compte PHPfrance

13 janv. 2016, 14:05

Je suis sur serveur.

Mon appel de page nest autre qu'un <a href> dans lequel j'ai ma variable $variable.pdf

Oui je pensais tester sur un autre serveur effectivement, ainsi que tester avec une gestion d'erreur 404.

Je vous tiens au courrant...

Merci pour toutes vos infos en tous cas

Mammouth du PHP | 881 Messages

14 janv. 2016, 01:02

Si ce sont des noms faits de chiffres comme tu l'écris en tête, tu peux chercher un ++ après une variable.
Ainsi ta variable $x++ sera augmentée de 1 au prochain appel.
De petits détails du genre sont souvent source de grands tourments.
Soyez artisans de paix

Chris69
Invité n'ayant pas de compte PHPfrance

19 avr. 2016, 22:12

Je reprends ce post afin d'y ajouter quelques infos.

Le developpement dont je parle était hebergé chz netbenefit. Ce dernier a vendu sa branche serveur mutualisés et c'est la que les problemes dont je parle plus haut sont apparus. le nouvel hebergeur ne semble pas s'occuper de ce cas (je verrai apres l'attitude a tenir envers lui...) bref, en faisant quelques tests j'ai constaté, par exemple, que si j'appelle la page mainx.php au lieu de la page main.php le "x" disparait automatiquemnt et laisse place à la bonne page avec la bonne orthographe soit main.php. Si par contre je tappe mainxx.php, j'obtiens une page 404.

Que penser de cela ??

Mammouth du PHP | 881 Messages

19 avr. 2016, 22:19

Vérifie le .htaccess de ton répertoire principal. Il y a peut-être là quelques instructions qui cherchent à pallier aux fautes de frappe ou aux erreurs communes.
Soyez artisans de paix

Chris69
Invité n'ayant pas de compte PHPfrance

19 avr. 2016, 22:43

J n'ai pas encore placé de htacces...

Mammouth du PHP | 881 Messages

20 avr. 2016, 00:47

C'est peut-être celui défini par ton fournisseur. Si un tronc a un .htaccess, les commandes de celui-ci s'appliquent à toutes les branches sauf si une branche comporte un .htaccess.

Il est difficile de comprendre une redirection si t'en as pas programmée.
Soyez artisans de paix

Chris69
Invité n'ayant pas de compte PHPfrance

21 avr. 2016, 21:30

C'est bien ca le problème !!

Non il n'y a pas d'htaccess fournisseur. Même eux ne savent pas ou ne veulent pas savoir ce qui se passe.

Le developpement est à été fait en php 4. Est ce que les version plus recentes gerent ce type de comportement ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 avr. 2016, 22:29

Bonjour,

Après pas mal de recherche, voici probablement le module Apache utilisé qui permet de faire cela :
https://httpd.apache.org/docs/2.4/mod/mod_speling.html

Toutefois mon conseil serait plutôt que tu corriges tes liens pour avoir des liens valides, plutôt qu'une bidouille qui va chercher le nom approchant.
Quand tout le reste a échoué, lisez le mode d'emploi...