Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1622 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1315804
ptibat
Posté le 01-03-2006 à 00:56:17  profilanswer
 


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
mood
Publicité
Posté le 01-03-2006 à 00:56:17  profilanswer
 

n°1315865
newneo2001
Posté le 01-03-2006 à 09:43:22  profilanswer
 

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
 
++

n°1315910
omega2
Posté le 01-03-2006 à 10:20:44  profilanswer
 

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().

n°1315972
ptibat
Posté le 01-03-2006 à 11:27:09  profilanswer
 


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
n°1315983
omega2
Posté le 01-03-2006 à 11:38:05  profilanswer
 

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.

n°1316000
ptibat
Posté le 01-03-2006 à 11:52:27  profilanswer
 


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
n°1316009
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 12:00:16  profilanswer
 

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 !
n°1316012
omega2
Posté le 01-03-2006 à 12:01:11  profilanswer
 

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 ?

n°1316124
ptibat
Posté le 01-03-2006 à 13:46:24  profilanswer
 

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
n°1316324
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 16:34:59  profilanswer
 

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 !
mood
Publicité
Posté le 01-03-2006 à 16:34:59  profilanswer
 

n°1316329
ptibat
Posté le 01-03-2006 à 16:41:35  profilanswer
 


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


---------------
flick r
n°1316340
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 16:56:07  profilanswer
 

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 !
n°1316634
ptibat
Posté le 01-03-2006 à 22:18:34  profilanswer
 

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
n°1316655
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 23:02:52  profilanswer
 

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

n°1316693
ptibat
Posté le 02-03-2006 à 01:41:03  profilanswer
 


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
n°1316706
Le_Tolier
Hello IT ?
Posté le 02-03-2006 à 08:42:11  profilanswer
 

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 !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
probléme d'affichage de la date[Résolu] Problème pour un INSERT INTO d'une base vers une autre
[DataSet to Xml]Probleme si champs vaut nullprobleme lecture audio sur forum
[vbScript] [Excel] probleme graphique[PHP] Debugage des applications
Jsp: probleme pour uploader un docPhp ne peut charger l'extension mysql
Simple question PHP (Variable)[débutant inside] probleme lors de la construction d'un jeu de cartes.
Plus de sujets relatifs à : Le problème vient d'Apache ou de PHP ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR