Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Sonderzeichen in der URL [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Sonderzeichen in der URL


 
martinm79
03-06-2009, 21:10 
 
Ich mußte mir jetzt ein neuen Apache als localhost installieren, aber irgendwas stimmt da noch nicht.


/martinaohnesonderzeichen

wird in der URL gefunden, aber bei

/martin%E4
(martinä, ein Beispiel mit ä)

kommt Error 403.


Also online und auf meinem alten localhost hat alles funktioniert.

Weiß zufällig jemand was bei der Einstellung vom Apache oder PHP nocht nicht ganz stimmt?

 
h3ll
03-06-2009, 21:31 
 
Ich mußte mir jetzt ein neuen Apache als localhost installieren, aber irgendwas stimmt da noch nicht.


/martinaohnesonderzeichen

wird in der URL gefunden, aber bei

/martin%E4
(martinä, ein Beispiel mit ä)

kommt Error 403.

Weil es nicht martin%E4 sondern martin%C3%A4 heißen muss.

URLs werden in der Regel in UTF-8 geschrieben und der HEX-Code für ä lautet 0xC3A4.

 
martinm79
03-06-2009, 22:04 
 
Aha.

Na man codiert ja einen String mit urlencode() und online (Linux) und bei meinen alten localhost (Windows) funktionierte es ja auch.


Wie kann ich denn den neuen Apache konfigurieren, das er mit dem Zeichensatz funktioniert?


Irgendwas (Apache / php) muß momentan ja nicht richtig eingestellt sein. :/

 
h3ll
03-06-2009, 22:20 
 
Nein, es funktioniert alles richtig. Du verwendest einfach nur den falschen Zeichensatz.

Einige Server akzeptieren gnädigerweise auch andere Zeichensätze als UTF-8, aber du kannst nicht fix davon ausgehen.

<?php

echo urlencode('ä');
// %C3%A4

?>

 
martinm79
03-06-2009, 23:57 
 
%C3%A4

spingt sofort auf ä



Ich muß dazu sagen, ich hatte mir den Apache 2.2 installiert.


Es muß doch eine Lösung geben, wo

ä

%E4

und

%C3%A4

geht. Bei anderen Seiten geht es ja auch.


Wenn ich das jetzt nicht hinbekomme, muß ich den ganzen localhost deinstallieren. Dann nehme ich den Apache 1.xx und meine alte config :(

 
asp2php
04-06-2009, 00:02 
 
Wenn du Apache nicht selbst konfigurieren kannst dann nimm doch XAMPP. Ansonstens post mal httpd.conf.

 
martinm79
04-06-2009, 00:51 
 
Ich habe meine alte entwicklungsumgebung ja auch selbst konfiguriert und es lief wunderbar. Und wenn ich es selber mache, lerne ich dazu was bei Xampp nicht der fall ist.

Momentan läuft ja auch alles, aber ich schätze das es an dem Apache 2.2 liegt, das da ein Modul oder so geändert wurde. Anders kann ich mir das nicht erklären.




Die aktuelle config ist im Anhang.

 
asp2php
04-06-2009, 01:32 
 
Poste mal die beiden Dateien:

Include conf/extra/httpd-languages.conf

Include conf/extra/httpd-default.conf

 
martinm79
04-06-2009, 02:03 
 
Habe ich mal in txt umbenannt.

 
martinm79
04-06-2009, 02:52 
 
Und das steht denn immer in der Error Log vom Apache


[Thu Jun 04 01:47:39 2009] [error] [client 127.0.0.1] (22)Invalid argument: Cannot map GET /xxx/public_html/people/martin%E4 HTTP/1.1 to file, referer: http://localhost/xxx/public_html/


Sämtliche Aufrufe ohne ö ä ü funktionieren.

 
wahsaga
04-06-2009, 03:08 
 
%C3%A4

spingt sofort auf ä
Was in der Adresszeile "springt", ist uninteressant.

Wie lautet der genaue Request, der an den Server geschickt wird, und was sagt das Log zu diesem Request?

 
martinm79
04-06-2009, 03:47 
 
Wenn ich in der URL

public_html/people/martin%C3%A4

eingebe, springt die URL automatisch auf

public_html/people/martinä



Dabei wird kein Eintrag in der Error Log gemacht.
In der Access Log steht dann:

127.0.0.1 - - [04/Jun/2009:02:43:38 +0200] "GET /xxx/public_html/people/martin%C3%A4 HTTP/1.1" 200 3161




Ich versteh nicht warum martin%C3%A4 funktioniert aber nicht martin%E4. Sonderzeichen sind doch in beiden Aufrufen drinne.

 
wahsaga
04-06-2009, 05:10 
 
Wenn ich in der URL

public_html/people/martin%C3%A4

eingebe, springt die URL automatisch auf

public_html/people/martinä
Wie ich schon sagte, reichlich uninteressant, was da wo "springt".
Dabei wird kein Eintrag in der Error Log gemacht.
In der Access Log steht dann:

127.0.0.1 - - [04/Jun/2009:02:43:38 +0200] "GET /xxx/public_html/people/martin%C3%A4 HTTP/1.1" 200 3161
D.h. also, damit funktioniert es ...?
Ich versteh nicht warum martin%C3%A4 funktioniert aber nicht martin%E4. Sonderzeichen sind doch in beiden Aufrufen drinne.
http://www.apachefriends.org/f/viewtopic.php?p=133951#p133951

(Ob das so in der Einfachheit als Erklärung allgemeingültig ist, weiss ich nicht. Ich denke, die vom Dateisystem verwendete Zeichenkodierung dürfte aber eine Rolle spielen.)

 
martinm79
04-06-2009, 05:17 
 
Auf meinem alten PC war aber auch Windows drauf mit XP und da lief das ganze Projekt unter Apache wunderbar.

Ich mag keine Fragen auf die ich keine Antwort finde. :(

 
martinm79
04-06-2009, 05:22 
 
D.h. also, damit funktioniert es ...?


ja.

Aber siehe mein Posting zuvor.

Ich weiß jetzt nur nicht ob das nur an dem Apache 2.2 liegt oder an etwas anderem.


Kann ich den Zeichensatz für die url definieren?
Falls ja, wie?

 
h3ll
04-06-2009, 07:41 
 
Auf meinem alten PC war aber auch Windows drauf mit XP und da lief das ganze Projekt unter Apache wunderbar.

Ich mag keine Fragen auf die ich keine Antwort finde. :(

Verwendest du vielleicht ein anderes Dateisystem? NTFS statt FAT32?

Ich versteh ehrlich gesagt nicht, warum du dich sträubst, UTF-8 zu verwenden. URLs sollten normal in UTF-8 codiert sein. Was passieren kann, wenn man sich nicht daran hält, hast du jetzt kennen gelernt. Warum willst du also mit biegen und brechen den Server zwingen, dass er falsche Requests annimmt und verarbeitet?

 
martinm79
04-06-2009, 13:19 
 
Verwendest du vielleicht ein anderes Dateisystem? NTFS statt FAT32?


Beim alten war FAT32 drauf und jetzt habe ich NTFS.




Ich versteh ehrlich gesagt nicht, warum du dich sträubst, UTF-8 zu verwenden.
Mach ich ja nicht. Bei allen Sachen würde ich ja in Zukunft darauf achten!


Warum willst du also mit biegen und brechen den Server zwingen, dass er falsche Requests annimmt und verarbeitet?

Ich möchte das mein altes Projekt genauso wieder auf mein localhost läuft wie früher.
Und ich möchte das auch zu gerne wissen, wie man sowas beeinflussen kann.

 
h3ll
04-06-2009, 13:31 
 
Und ich möchte das auch zu gerne wissen, wie man sowas beeinflussen kann.

Nicht Apache 2 oder nicht Windows NT verwenden.


1.2.11 Native Windows NT Unicode-Unterstützung
Unter Windows NT-basierten Versionen des Windows-Betriebssystems verwendet der Apache 2.0 jetzt utf-8 für alle Dateinamen-Kodierungen. Diese werden direkt auf das zugrunde liegende Unicode-Dateisystem abgebildet, wodurch Mehrsprach-Unterstützung für alle Windows NT-basierten Varianten (Windows 2000, NT, XP) möglich wird. Unter Windows 95, 98 oder ME ist diese nicht verfügbar, so dass hier die lokale Codepage des jeweiligen Rechners für den Zugriff auf das Dateisystem verwendet wird.

Apache Webserver 2: Installation ... - Google Buchsuche (http://books.google.at/books?id=Xm88leQO9yYC&pg=PA23&lpg=PA23&dq=Unter+Windows+NT-basierten+Versionen+des+Windows-Betriebssystems+verwendetder+Apache+2.0+jetzt+utf-8+f%C3%BCr+alle&source=bl&ots=qiKC7YkcXo&sig=qp0FMganMjzxtq_5JYrPNoFikC0&hl=de&ei=D6InSq_SAYalsAb1v8iEBg&sa=X&oi=book_result&ct=result&resnum=1)

 
martinm79
04-06-2009, 14:37 
 
Vielen Dank für die Mühe!

1. Das heißt unter Linux würde der Apache 2.x mit den URL auch so funktionieren oder geht das denn generell nicht mehr?



Ok, ich werde den Apache 2.x wieder deinstallieren und mir den alten 1.x raufmachen. Und für die Zukunft habe ich definitiv gelernt.

 
martinm79
07-06-2009, 19:52 
 
Es lag wirklich an den neuerungen vom 2.2.
Mit dem alten 1.3 läuft alles wie früher.

Danke für die Hilfe. :)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:49 Uhr.