Starý LAMP na novém stroji

Starý LAMP na novém stroji
« kdy: 23. 07. 2011, 08:16:16 »
Zdravím a ptám se vyčerpav snad všechny možnosti:

Před léty jsem napsal několik skriptů PHP s databází MySQL, vše fungovalo na Slackware tuším 11 nebo 12, funguje dodnes. Opustil jsem to a včil asi po třech letech potřebuji udělat nějakou změnu, doplnění. Protože to nemohu dělat tam, kde to běží, vše jsem nainstaloval na jiný počítač s Ubuntu 10.04. Funguje Apache2, PHP i MySQL. Skripty se spustí, ale v některých situacích se zobrazuje nesprávně čeština ve věcech tahaných z DB, jsou tam otazníky místo např. ř, č... Přitom PHPMyAdmin zobrazuje vše správně. Změnil jsem variables character_set_* od MySQL na latin2 (všechno bylo tehdy v ISO-8859-2), nastavil jsem tak vše, co jsem našel, ale zřejmě jsem něco vynechal, možná došlo během let ke změnám, o nichž nevím a nemohu si dovolit to teď od základu znovu vše studovat (nebo někam instalovat starý Slackware) kvůli jednoduché úpravě, kterou chci a potřebuji provést. Děkuji za každou dobrou radu.

Pohoda, hezký den


McFly

  • *****
  • 583
    • Zobrazit profil
    • E-mail
Re: Starý LAMP na novém stroji
« Odpověď #1 kdy: 23. 07. 2011, 09:18:01 »
Po každém připojení k databázi a následném vybrání databáze, se kterou chci pracovat, posílám na MySQL dotaz

Kód: [Vybrat]
mysql_query('SET NAMES latin2');
funguje OK (taky mi tu běží Slackware:-)

McFly

  • *****
  • 583
    • Zobrazit profil
    • E-mail
Re: Starý LAMP na novém stroji
« Odpověď #2 kdy: 23. 07. 2011, 09:19:11 »
btw latin2 = ISO-8859-2

Re: Starý LAMP na novém stroji
« Odpověď #3 kdy: 23. 07. 2011, 09:44:07 »
Děkuji za radu I na toto jsem už někde narazil, rád bych to však ošetřil nějakým jednorázovým nastavením. Ty skripty totiž běží na tom "starém" stroji a já si to potřebuji rozchodit na svém, novějším, upravit  a potom poslat bývalému kolegovi na ten starý. Navíc si nejsem jistý, co by ten přikaz způsobil na tom starém stroji.

Re: Starý LAMP na novém stroji
« Odpověď #4 kdy: 26. 07. 2011, 10:22:09 »
Zkusím se zeptat znovu a snad lépe: Jak přesvědčit MySQL (či kde může být chyba), aby komunikovala v latin2 (vždy, ne jen někdy) nějakým jednorázovým opatřením/nastavením, nejen hromadným zastrkáváním dalšího query? Na co jsem mohl zapomenout? Jak mohu chybu odhalit? Najít její kořenovou příčinu? Proč to v PHPMyAdminu ukazuje správně a ve skriptu jen někdy? Děkuji.


KapitánRUM

Re: Starý LAMP na novém stroji
« Odpověď #5 kdy: 26. 07. 2011, 10:53:39 »
2 Josef Polách

Pošli mi na sebe kontakt, když budu mít náladu, překóduju ti ten projekt do UTF-8.

Re: Starý LAMP na novém stroji
« Odpověď #6 kdy: 26. 07. 2011, 12:20:27 »
Děkuji moc za nabídku, není to však to, oč mi jde. Je to takto: V minulé práci jsem napsal intranetový projektík. Fungovalo to a kupodivu funguje i po čtyřech letech (to je ten starý LAMP na starém stroji, vše v latin2). Včil však potřebují, abych jim tam něco doplnil a vylepšil. Nemohu a nechci to ale dělat tam, proto jsem si to dal na svůj počítač, kde mám jiné - novější prostředí. Vše jsem nastavil, nicméně v některých případech se mi data tahaná z databáze zobrazují správně, někdy nesprávně (s otazníky místo č, ř...) a někdy vůbec (asi se porovnávají v odlišném kódování). Přitom stejná data v PHPMyAdminu jsou vidět a fungují správně. Mám za to, že je nějaké nastavení, které jsem nenašel, během těch let, kdy jsem měl pauzu, asi něco přibylo. Nechce se mi však věřit tomu, že se během té doby změnilo tolik, aby se ztratila zpětná kompatibilita. Dík za pochopení.

Překonvertit bych to snad dovedl i sám, raději bych však "čisté" řešení.

alfi

  • ****
  • 331
    • Zobrazit profil
    • E-mail
Re: Starý LAMP na novém stroji
« Odpověď #7 kdy: 26. 07. 2011, 14:04:31 »
já bych to řešil pořádně, tj. instalací nové verze do produkce (beztak už je tam vše hodně děravé..?) nebo přinejhorším staré pro test (pomůže i virtuální stroj s kopií produkce). jinak se dřív nebo později dostaneš do stavu, že na testu něco běží a po kopii do produkce už z podobně záhadného důvodu ne. to je jediné opravdu "čisté" řešení :-)

KapitánRUM

Re: Starý LAMP na novém stroji
« Odpověď #8 kdy: 26. 07. 2011, 14:38:48 »
php.ini

default_charset = "latin2"

Re: Starý LAMP na novém stroji
« Odpověď #9 kdy: 26. 07. 2011, 20:09:46 »
Dík za snahu. Samá voda, chová se to úplně stejně:(

noname

Re: Starý LAMP na novém stroji
« Odpověď #10 kdy: 26. 07. 2011, 21:00:24 »
no, data z databaze muzou bejt vyndany spravne, ale treba v http hlavicce mas vynuceny neco spatne. tezko odhadovat.  neco zobrazit spravne cesky neni bohuzel otazkou jednoho centralniho nastaveni, je vic ovlivnujicich faktoru.

hulka

Re: Starý LAMP na novém stroji
« Odpověď #11 kdy: 26. 07. 2011, 21:23:06 »
A v čem se Vám zobrazuje špatně diakritika? Zkuste v prohlížeči nastavit patřičné kódování. Jako další můžete zkusit php skript zpustit v terminálu co Vám to produkuje. Stejný postup můžete použít přímo ručním zadáváním požadavků na mysql databázi. Tolik vše co můžete vyzkoušet při ladění. Více Vám neporadím, nejsem v tomto expert.

Re: Starý LAMP na novém stroji
« Odpověď #12 kdy: 27. 07. 2011, 18:01:22 »
Hlavičky http jsou správně, prohlížeč je nastavený správně, chybné diakritika je jen v řetězcích tahaných z databáze. Běžný text vypisovaný skriptem je OK. Jiné prohlížeče to ukazují úplně stejně (zkoušel jsem Chrome odjinud, FF odjinud, lokálně Lynx v konzole latin2, Lynx v konzole UTF8). PHPMyAdmin zobrazuje data správně. Podrobně jsem to popisoval v předešlých příspěvcích.

Můj názor je, že se něco (v MySOL) za ty asi čtyři roky změnilo, snad přibyla nějaká nová funkce, nějaké nové nastavení něčeho. V tom tuším problém. A nemohu na to přijít.

Re: Starý LAMP na novém stroji
« Odpověď #13 kdy: 27. 07. 2011, 18:17:55 »
Alfi: I já bych to tak řešil. O tom však nerozhoduji já a ti, kteří to provozují, se rozhodli mít to na tom starém "stroji". (Tedy fyzicky na novém, ale protože to s Linuxem moc neznají, šli cestou nejmenšího odporu a virtuálně tam dali ten starý Slackware a všecko tam přenesli a běží to).

A já si zase na svém malém a pomalém PC nemohu dovolit nějakou virtuálku se starým Slackem. Tož jsem to nasadil na aktuální LAMP zde a nedovedu odstranit popsanou chybu.

Nemohu uvěřit tomu, že by databáze nebyla schopná vracet data ve správném kódování. Zejména když přes PHPMyAdmin to jde. Už se ale opakuji. Co mohu dělat blbě?

McFly

  • *****
  • 583
    • Zobrazit profil
    • E-mail
Re: Starý LAMP na novém stroji
« Odpověď #14 kdy: 27. 07. 2011, 18:30:58 »
PHPMyAdmin je dle mého profi aplikace, která počítá s tím, že každý mysql server může být nakonfigurován jinak (jeden má výchozí znakovou sadu UTF-8, další Latin2 atd) a proto se v nebrání použití SET NAMES, čímž si zajistí správné fungování PHPMyAdmin na Slackware 8 i 13.37 ;-)