PHP uploading script i debian

Permalänk
Medlem

PHP uploading script i debian

Sista problemet jag inte har förstått hur jag ska lösa i min linuxfiering av min server och jag har googlat fast förmodligen på fel saker:

Jag har en fildump, phpbaserad, som jag använder mycket. Tidigare, i windowsmiljö fungerade den perfekt och den fungerar perfekt i Debian-miljö också. Ända problemet är att det fuckar upp helt och hållet om jag skriver ö, å eller ä i filnamnet på filen jag laddar upp. Finns det någon charset att ändra någonstans eller är det mer avancerat? Oavsett, vad ska jag göra? Om det är totalt omöjligt så får jag försöka leva utan den

Permalänk
Medlem

Tycker det låter väldigt konstigt men du kan ju testa att lägga detta i head-taggen:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av -SE-
Sista problemet jag inte har förstått hur jag ska lösa i min linuxfiering av min server och jag har googlat fast förmodligen på fel saker:

Jag har en fildump, phpbaserad, som jag använder mycket. Tidigare, i windowsmiljö fungerade den perfekt och den fungerar perfekt i Debian-miljö också. Ända problemet är att det fuckar upp helt och hållet om jag skriver ö, å eller ä i filnamnet på filen jag laddar upp. Finns det någon charset att ändra någonstans eller är det mer avancerat? Oavsett, vad ska jag göra? Om det är totalt omöjligt så får jag försöka leva utan den

Kan du skapa en fil i Debian med åäö, i konsolen?
Kan du ändra ett filnamn i Debian från ett med UTAN åäö till ett MED åäö?

Får vi se lite feedback, vad php säger när det krashar?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Leedow
Kan du skapa en fil i Debian med åäö, i konsolen?
Ja, har satt translate UTF-8 i putty.

Kan du ändra ett filnamn i Debian från ett med UTAN åäö till ett MED åäö?
Ja, gick via mv i terminalen.

Får vi se lite feedback, vad php säger när det krashar?

Bild 1

Här är en txt-fil innehållande ett dator och tillbehörspaket. Den lades dit via samba i fil-mappen. När jag sedan browsar fram den i uploadern så ser jag filnamnet som är i adressfältet nu. Ändrar jag där till "tillbehör" så fungerar det rätt.

Bild 2

Textfil igen. Filnamn, åäö.txt. Uppladdad genom uploadern och den får rätt filnamn när man listar den i uploadern, men fick egentligen filnamnet ___.txt

Jag googlade runt lite igårkväll om charsets i apache2, är jag på rätt spår? Tråden kanske tillomed har dum titel om det är det felet.

Permalänk
Medlem

http://se2.php.net/str_replace
Testa att byta namn på filerna så att åäö blir aao eller nått...

Jag använder det här scriptet på min sida.

function niceURL($string) { $before = array( 'å', 'ä', 'ö', 'á','é','í','ó','ú','Á','É','Í','Ó','Ú','ñ','Ñ',' ' ); $after = array( 'a', 'a', 'o', 'a','e','i','o','u','A','E','I','O','U','n','n','_' ); return strtolower( str_replace( $before,$after,$string ) ); }

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av -SE-
Bild 1

Här är en txt-fil innehållande ett dator och tillbehörspaket. Den lades dit via samba i fil-mappen. När jag sedan browsar fram den i uploadern så ser jag filnamnet som är i adressfältet nu. Ändrar jag där till "tillbehör" så fungerar det rätt.

Bild 2

Textfil igen. Filnamn, åäö.txt. Uppladdad genom uploadern och den får rätt filnamn när man listar den i uploadern, men fick egentligen filnamnet ___.txt

Jag googlade runt lite igårkväll om charsets i apache2, är jag på rätt spår? Tråden kanske tillomed har dum titel om det är det felet.

Jag testade att skapa en liknande fil på min webbserver, Ubuntu Server 9.0.4. Jag fick detta resultat:

http://192.168.10.110/free/tillbeh%f6rspaket.txt i URLen, vilket verkar vara rätt. Något slags encodingproblem är det ju.

Permalänk
Medlem

URLer har väl ett eget sätt att encoda åäö osv. Titta på funktionen urlencode().

Permalänk
Medlem

Har du lust att skicka en kopia av källkoden till dumpen? Skulle inte vara fel att ha.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MarcusW
Har du lust att skicka en kopia av källkoden till dumpen? Skulle inte vara fel att ha.

Om du löser mitt problem

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Arood
URLer har väl ett eget sätt att encoda åäö osv. Titta på funktionen urlencode().

Har ändrat charset i conf.d/default nu till utf-8 vilket gör att det fungerar bättre på lite andra punkter. Men precis som du säger upplever jag det att URLer encodas på ett annat sätt. Men min fråga till dig är vad jag ska göra med urlencode?

Permalänk

Tycker du ska titta på urldecode() istället. Kör helt enkelt urldecode på filnamnet.

Permalänk
Medlem

Du har ju uppenbart teckenuppsättning problem på servern.
Snabb hack är att använda utf8_decode() / utf8_encode i kåden för fixa till så det fungerar. Om du högst upp i webläsaren ändrar encoding till utf8 kommer du se att tecknna ser rätt ut. Men för lösa problemet måste du ändra på servern.

Skriver du "locale" på servern ser du vilken uppsättning den är inställd på.
För debian skriver du sen dpkg-reconfigure locales för ändra till rätt.
sedan måste du exportera den charset du vill köra i /etc/profile.
När du gjort det måste du kolla så inte php filen har fått fel charset.
Detta gör du med file -i filename.php så kommer den berätta för dig vilken charset filen har. Du ändrar sedan med "iconv -f ISO-8859-1 -t utf8 ./filename.php > filename2.php" && mv filename2.php filename.php

Sedan måste apache vara inställt på rätt charset i httpd.conf. Det är ofta en rad som säger AdddefaultCharset UTF-8

Vad som anses som rätt charset bestämmer du själv mellan iso8859-1 eller UTF-8 saken är bara att du måste ha samma rakt genom på operativ, webserver och filen. Pallade inte skriva ett utförligare svar en så.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av nighter
Du har ju uppenbart teckenuppsättning problem på servern.
Snabb hack är att använda utf8_decode() / utf8_encode i kåden för fixa till så det fungerar. Om du högst upp i webläsaren ändrar encoding till utf8 kommer du se att tecknna ser rätt ut. Men för lösa problemet måste du ändra på servern.

Skriver du "locale" på servern ser du vilken uppsättning den är inställd på.
För debian skriver du sen dpkg-reconfigure locales för ändra till rätt.
sedan måste du exportera den charset du vill köra i /etc/profile.
När du gjort det måste du kolla så inte php filen har fått fel charset.
Detta gör du med file -i filename.php så kommer den berätta för dig vilken charset filen har. Du ändrar sedan med "iconv -f ISO-8859-1 -t utf8 ./filename.php > filename2.php" && mv filename2.php filename.php

Sedan måste apache vara inställt på rätt charset i httpd.conf. Det är ofta en rad som säger AdddefaultCharset UTF-8

Vad som anses som rätt charset bestämmer du själv mellan iso8859-1 eller UTF-8 saken är bara att du måste ha samma rakt genom på operativ, webserver och filen. Pallade inte skriva ett utförligare svar en så.

Man tackar extremt. Ska prova lite sen.

EDIT: Ändrar detta inte bara webbsidans kodning? Utan även URL-kodningen?

Permalänk
Medlem

php.ini vill jag också minnas har en charset-inställning som kan ställa till trubbel.