News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Ékezetes problémák Apache/PHP környezet változása után

Started by cncvikto, August 10, 2018, 05:36:52 AM

Previous topic - Next topic

cncvikto

Sziasztok!
A fórumnak az SMF rendszeren jól jelennek meg az ékezetek, a kategóriák, fórumok -, felhasználók neveiben és hozzászólásaiban az ékezet rossz.

Szervercsere van munkahelyünkön és a régi szerveren frankón mennek az ékezetek, az új szerveren nem (az adatbázisból jövő tartalomnak rossz az ékezete). Már kipróbáltam azt is, hogy az új szerveren lévő adatbázist állítottam be a régi szerveren és akkor is működik a régi szerveren a fórum, tehát ezek szerint nem adatbázis, illetve adatbázisszerver a gond.
Valami PHP beállítás vagy bővítmény lehet a ludas, ami az új szerveren más, valami PHP konfigurációs dolog lehet.
Kipróbáltam azt is, hogy az új szerverről visszamásoltam a fájlokat a régire, akkor is megy, tehát nem is másolásnál volt a probléma. Próbálom elemezni a forráskódot, milyen PHP függvény lehet a ludas, de egyelőre nem találtam semmit.
Előre is köszönök bármilyen ötletet!

cncvikto

Ez az oldal alapján (hxxp:stackoverflow.com/questions/8879564/latin-1-to-utf-8-database [nonactive]) tettem egy próbát a fórumtagok nevével.
Érdekes, hogy az smf_members táblában a real_name oszlopra csak egy utasítást adtam ki:

ALTER TABLE smf_members MODIFY real_name VARCHAR(255) CHARACTER SET BINARY;

De utána már meg is javult a név!
Kicsit macerás lesz ennyi táblánál kikeresni a fontos mezőket és azokat egyenként így módosítani..
Úgyhogy érdemes utána néznem mi is ez a binary.

cncvikto

Na szóval... nálunk az alábbi táblákban volt rossz ékezetes adat:


ALTER TABLE smf_boards MODIFY name VARCHAR(255) CHARACTER SET BINARY;
ALTER TABLE smf_boards MODIFY name VARBINARY(255) NOT NULL;


ALTER TABLE smf_boards MODIFY description TEXT CHARACTER SET BINARY;
ALTER TABLE smf_boards MODIFY description BLOB NOT NULL;


ALTER TABLE smf_categories MODIFY name VARCHAR(255) CHARACTER SET BINARY;
ALTER TABLE smf_categories MODIFY name VARBINARY(255) NOT NULL;

ALTER TABLE smf_members MODIFY real_name VARCHAR(255) CHARACTER SET BINARY;
ALTER TABLE smf_members MODIFY real_name VARBINARY(255) NOT NULL;


ALTER TABLE smf_messages MODIFY subject VARCHAR(255) CHARACTER SET BINARY;
ALTER TABLE smf_messages MODIFY subject VARBINARY(255) NOT NULL;

ALTER TABLE smf_messages MODIFY body TEXT CHARACTER SET BINARY;
ALTER TABLE smf_messages MODIFY body BLOB NOT NULL;

ALTER TABLE smf_sp_blocks MODIFY label TINYTEXT CHARACTER SET BINARY;
ALTER TABLE smf_sp_blocks MODIFY label TINYBLOB NOT NULL;

ALTER TABLE smf_sp_parameters MODIFY value TEXT CHARACTER SET BINARY;
ALTER TABLE smf_sp_parameters MODIFY value BLOB NOT NULL;

Lehet, hogy más táblára/mezőkre is kell adnod az utasítást, ha több adatod van mint nekünk a szervercsere előtt..

ELŐTTE CSINÁLJ MENTÉST MINDENKÉPPEN MENTÉST AZ ADATBÁZISODRÓL!
A "character set binary" opció elrontja, eltörli a többi opcióját az oszlopnak (például hogy nem lehet üres, azaz "not null").
Ezért javaslom hogy ha újabb mezőket is át kell alakítanod, jegyezd meg az egyéb opcióit az oszlopnak és újabb alter table utasítással állítsd vissza hasonlóan a fentiekhez.

Nekem így most jó lett. Hozzá teszem hogy SMF verzió: 2.0.7.

cncvikto

Az előző 8 mező után most találtam egy kilencediket amit módosítani kell.
A probléma akkor jelentkezett amikor módosítani akartam a profilját a felhasználónak:
"Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
Fájl: /srv/www/htdocs/PHP/forum/Sources/Subs-Members.php
Sor: 971)"


Ennek megoldása a kilencedik mező módosítása:
ALTER TABLE smf_membergroups MODIFY group_name VARCHAR(80) CHARACTER SET BINARY;
ALTER TABLE smf_membergroups MODIFY group_name VARBINARY(80) NOT NULL;

Advertisement: