Le problème vient d'Apache ou de PHP ?

Le problème vient d'Apache ou de PHP ? - PHP - Programmation

Marsh Posté le 01-03-2006 à 00:56:17    


Bonjour :)
 
Comment accèder à des fichiers et répertoire lorsqu'ils contiennent des caracètres spéciaux ?
Je vous explique ...
 
 
- J'ai un serveur Apache + PHP5
- Apache gere le port 80 pour le site web
- et le port 81 qui renvoi vers un autre disque pour accèder à des données...
 
Exemple concret :
 
Sur une page j'ai un lien qui pointe vers http://localhost:81/rep/etudiant.txt, pas de problème j'arrive à réccupérer le fichier
 
Maintenant si j'ai : http://localhost:81/rep/étudiant.txt ou http://localhost:81/rép/etudiant.txt avec l'accents celà ne marche plus .... :/
 
Apache me renvoi l'erreure :
 
"Accès interdit!
...
Error 403"
 
Pourtant les espaces sont bien convertit en "%20" l'url lorsque je clique sur le lien... et les accents aussi ...:/
 
 
 
D'où provient le problème ? De la config d'Apache ? Du lien en lui même ?  
 
Merci  :jap:  
 


---------------
flick r
Reply

Marsh Posté le 01-03-2006 à 00:56:17   

Reply

Marsh Posté le 01-03-2006 à 09:43:22    

le problème vient de l'accent pas des espaces
 
déjà évite les accents dans tes noms de fichiers, c'est un problème d'encodage d'écriture.
 
tu peux peut être utiliser html_entity_decode() qui va reconvertir ton &eacute en é. Mais j'en suis pas sûr du tout. Faut tester. mais enlève les accents c'est mieux
 
++

Reply

Marsh Posté le 01-03-2006 à 10:20:44    

ptibat > Tes adresses, tu les saisies dans la barre d'adresse du navigateur ou bien c'est des adresses indiqué dans un lien?
Dans le second cas, tu utilises une fonction pour traiter l'adresse ou tu envoie tel quel le texte de l'adresse?
Si tu utilises une fonction, t'utilise laquelle?
 
Normalement, la fonction à utiliser pour encoder une adresse internet, c'est urlencode().

Reply

Marsh Posté le 01-03-2006 à 11:27:09    


Bah en fait je ne peut pas enlever les accents ...
 
J'ai le listing des fichiers présent sur un disque dur (autre que celui du site web) dans une base de donnée avec : id  --  repertoire  --  nom_fichier  --  extention
 
Sur mon site web j'affiche les fichiers contenu dans tel ou tel répertoire... mais lorsque je concatène les champs repertoire+nom_fichier+extention pour arrivé à l'url du fichier (genre : http://localhost:81/rep/fichier.txt), je n'arrive à accèder au fichier que lorsqu'il n'y a pas d'accents ... :/
 
J'ai essayer avec WWW File Share Pro et lui arrive à réccupérer les fichiers qu'il ai des accents ou non ... :/
 
 
 


---------------
flick r
Reply

Marsh Posté le 01-03-2006 à 11:38:05    

Si tu veux vérifier la validiter du lien, tu peux déjà faire un file_exist en indiquant le bon répertoire au lieu du serveur web (possible uniquement si le script php et le fichier pointé sont sur le même serveur).
 
Mais déjà, si tu répondais à mes questions, on cernerait peut être mieux le probléme.

Reply

Marsh Posté le 01-03-2006 à 11:52:27    


Oui les adresses sont dans des liens.
Je récupère les infos dans la base, puis je concatène comme ceci :
 
$id = $tableau['id'];
$repertoire = $tableau['repertoire'];
$fichier = $tableau['fichier'];
$extention = $tableau['extention'];
 
$lien = $repertoire.$fichier.".".$extention;
$lien = str_replace("\rep\\","/",$lien);
$lien = str_replace("\\","/",$lien);
 
 
et dans le href du lien je met : "http://localhost:81".$lien
ce qui me donne l'adresse exacte (mais lorsqu'il y a des accents le fichier n'est pas accèssible...)
 
 
Sinon j'ai essayé les fonction html_entity_decode() et urlencode(), mais ca ne marche pas...
 


---------------
flick r
Reply

Marsh Posté le 01-03-2006 à 12:00:16    

Plutot que d utilise html_entities_decode utilise le html_entities_encode qui va convertie tes accent de sorte qu apache puisse les lire non ?


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 01-03-2006 à 12:01:11    

T'avais bien fait un

Code :
  1. "http://localhost:81".urlencode($lien)

?
 
Finalement, c'est peut être bien un probléme d'encodage des chaines de caractéres, peut être que dans ta base les données sont en utf8. Ca donne quoi si t'affiche également l'adresse (sans urlencode) comme texte du lien? Les caractéres sont comme il faut?
Et ta page, elle est envoyé avec quel encodage des caractéres? Un iso-xxxx ou un utf-xx ?

Reply

Marsh Posté le 01-03-2006 à 13:46:24    

Le_Tolier a écrit :

Plutot que d utilise html_entities_decode utilise le html_entities_encode qui va convertie tes accent de sorte qu apache puisse les lire non ?


Call to undefined function html_entities_encode()
Call to undefined function html_entity_encode()
:/
 

omega2 a écrit :

T'avais bien fait un

Code :
  1. "http://localhost:81".urlencode($lien)

?


Oui, mais les "/" convertit en "%2F" sont pas pris en compte et je me retrouve avec un lien qui pointe vers "http://localhost:81/"...
 

omega2 a écrit :

Finalement, c'est peut être bien un probléme d'encodage des chaines de caractéres, peut être que dans ta base les données sont en utf8. Ca donne quoi si t'affiche également l'adresse (sans urlencode) comme texte du lien? Les caractéres sont comme il faut?
Et ta page, elle est envoyé avec quel encodage des caractéres? Un iso-xxxx ou un utf-xx ?


ISO-8859-1
 
En fait dans la base de données, les url des répertoire sont sous forme Windows "\rep\sous répertoire\" puis un autre champs avec le nom du fichier puis un autre avec son extention.
Si j'affiche $lien avec convertion des "\" en "/" (format windows => format web) j'obtient ceci : "/rep/sous répertoire/"
 
 
 
 
 
 
Note :
 
$lien1 = "http://localhost:81/rep/sous repertoire/fichier 1.txt"   : OK
$lien2 = "http://localhost:81/rep/sous répertoire/fichier 1.txt"   : HS
$lien3 = "http://localhost:81/rep/sous repertoire/fichié 1.txt"   : HS
 
 

Message cité 1 fois
Message édité par ptibat le 01-03-2006 à 13:51:04

---------------
flick r
Reply

Marsh Posté le 01-03-2006 à 16:34:59    

ptibat a écrit :

Call to undefined function html_entities_encode()
Call to undefined function html_entity_encode()
:/


 
En fait c est htmlentities la fonction : http://www.php.net/manual/fr/function.htmlentities.php


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 01-03-2006 à 16:34:59   

Reply

Marsh Posté le 01-03-2006 à 16:41:35    


Non, toujours pareil, lorsqu'il y a un accent je ne peut pas télécharger le fichier... :/


---------------
flick r
Reply

Marsh Posté le 01-03-2006 à 16:56:07    

j ai fais un test sur mon serveur web ca fonctionne.
en fait la transcription est automatique chez moi : j ai ecrit :

Code :
  1. <a href="éssai.tar.gz">éssai</a>


et quand je clique le lien ressemble a ca : http://monserveur/dev/cordis/%E9ssai.tar.gz
 
Edit : dans la config php j ai ca :

Code :
  1. url_rewriter.tags :local value :a=href,area=href,frame=src,input=src,form=,fieldset=
  2. master value: a=href,area=href,frame=src,input=src,form=,fieldset=

Message cité 1 fois
Message édité par Le_Tolier le 01-03-2006 à 16:59:20

---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 01-03-2006 à 22:18:34    

Le_Tolier a écrit :

j ai fais un test sur mon serveur web ca fonctionne.
en fait la transcription est automatique chez moi : j ai ecrit :

Code :
  1. <a href="éssai.tar.gz">éssai</a>


et quand je clique le lien ressemble a ca : http://monserveur/dev/cordis/%E9ssai.tar.gz


 
<a href='http://localhost:81/rep/éssai.txt'>éssai.txt</a>   donne : http://localhost:81/rep/%E9ssai.txt  => HS
 
L'erreur Apache :
 
Accès interdit!
Vous n'avez pas le droit d'accéder à l'objet demandé. Soit celui-ci est protégé, soit il ne peut être lu par le serveur.  
 
 
 
 
<a href='http://localhost:81/rep/essai.txt'>essai.txt</a>   donne : http://localhost:81/rep/essai.txt  => OK
 
 
 
 
 

Le_Tolier a écrit :

Edit : dans la config php j ai ca :

Code :
  1. url_rewriter.tags :local value :a=href,area=href,frame=src,input=src,form=,fieldset=
  2. master value: a=href,area=href,frame=src,input=src,form=,fieldset=



J'ai ca aussi dans ma config.


---------------
flick r
Reply

Marsh Posté le 01-03-2006 à 23:02:52    

Donc a priori ca viendrait plus d apache  :??:

Reply

Marsh Posté le 02-03-2006 à 01:41:03    


J'en ai bien l'impression ...
J'ai tester avec le logiciel WWW File Share Pro et là pas de problème, j'arrive à reccupérer les fichiers avec des accents dans l'url... :/


---------------
flick r
Reply

Marsh Posté le 02-03-2006 à 08:42:11    

ptibat a écrit :

J'en ai bien l'impression ...
J'ai tester avec le logiciel WWW File Share Pro et là pas de problème, j'arrive à reccupérer les fichiers avec des accents dans l'url... :/


 
Je vais regarder ma conf apache mais je sais que je n ai rien fait de particulier a ce niveau la


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed