Le problème vient d'Apache ou de PHP ? - PHP - Programmation
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 é en é. Mais j'en suis pas sûr du tout. Faut tester. mais enlève les accents c'est mieux
++
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().
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 ...
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.
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...
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 ?
Marsh Posté le 01-03-2006 à 12:01:11
T'avais bien fait un
Code :
|
?
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 ?
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
? |
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? |
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
Marsh Posté le 01-03-2006 à 16:34:59
ptibat a écrit : Call to undefined function html_entities_encode() |
En fait c est htmlentities la fonction : http://www.php.net/manual/fr/function.htmlentities.php
Marsh Posté le 01-03-2006 à 16:41:35
Le_Tolier a écrit : En fait c est htmlentities la fonction : http://www.php.net/manual/fr/function.htmlentities.php |
Non, toujours pareil, lorsqu'il y a un accent je ne peut pas télécharger le fichier...
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 :
|
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 :
|
Marsh Posté le 01-03-2006 à 22:18:34
Le_Tolier a écrit : j ai fais un test sur mon serveur web ca fonctionne.
|
<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 :
|
J'ai ca aussi dans ma config.
Marsh Posté le 02-03-2006 à 08:42:11
ptibat a écrit : J'en ai bien l'impression ... |
Je vais regarder ma conf apache mais je sais que je n ai rien fait de particulier a ce niveau la
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
---------------
flick r