Recent, a trebuit să actualizez forumul SMF (Forumul mașinilor simple) de la versiunea 1.0 la 2.0RC1. În principiu, procesul de actualizare în sine nu are probleme. Cu toate acestea, există câteva puncte pe care aș dori să le traduc mai detaliat. Ceea ce a agravat situația a fost codificarea. Versiunea 1.0 a spus pe cp1251, dar cu siguranță am vrut să văd versiunea 2.0 pe ubquitous utf-8.
În acest stadiu, am primit un avertisment că există unele probleme cu fișierele de limbă. Pentru a nu ispiti soarta și nu ajunge într-o situație în care link-urile dvs. nu sunt disponibile (și toate din cauza faptului că va exista o traducere rusă a cuvântul dorit), am ales să folosească limba engleză și procesul de mers și a mers și ... stagnat. A apărut o eroare de bază de date cu următorul conținut:
Pentru mine sa terminat bine. În primul rând, actualizarea a fost făcută pe gazda locală și, în al doilea rând, forumul se află pe un server dedicat, unde am și posibilitatea de a schimba configurația în caz de probleme.
Să revenim la eroare. Această problemă este tipică atunci când apare o depășire a stivei. După cum puteți vedea din listă, trebuie să măriți variabila thread_stack. Acest lucru nu se poate face altfel decât prin editarea fișierului de configurare. Deschideți fișierul my.cnf și setați variabila după cum urmează:
Cel mai probabil, acest lucru nu va fi necesar. Și acest caz este relevant pentru testarea locală. Pe computer, am Denver, deci această problemă este relevantă pentru cei care folosesc această distribuție.
Deci, schimbăm variabila specificată, reporniți serverul și încercați din nou pentru upgrade.php. De data asta totul merge cu un bang!
Acum, cerem browserului să afișeze codul sursă al paginii. Suntem interesați de parametrii metaetichetei:
Asta este! În loc de utf-8 așteptat, avem unul vest-european. Mergem la subiecte și ne uităm la conținutul fișierului index.russian-utf8.php. Vedem această linie:
Deci, problema nu este asta.
Ei bine, este timpul sa ne intoarcem la persoanele care au mancat cainele SMF au mancat (cel putin ar trebui sa aiba). Mă duc la forumul comunității ruse, simplemachines.ru. Ca o persoană razoom, căut. Op-pa, surpriză numărul 1. Se pare că pentru a putea căuta, trebuie să mă înregistrez. Ei bine, băieți, ați obține cel puțin o CAPTCH dacă vă este frică să supraîncărcați serverul ...
Înregistrarea nu este metoda noastră! Încear să sortez cele corespunzătoare. Caut mesaje care menționează probleme legate de codificare. Ciudate cum pare, răspunsurile au fost reduse la mai multe propuneri similare (fără a include propuneri pentru a remedia mâinile strâmbe). O sugestie - pentru a seta parametrul $ db_character_set fișier settings.php (la momentul respectiv, de altfel, eu sunt la fel a trebuit să urce în jurul sursei, în scopul de a găsi parametrul responsabil pentru instalarea de codificare necesară la o conexiune la baza de date). Firește, acest lucru nu este ceea ce am avut nevoie (mai ales că acest parametru este setat pentru mine). Mai sfătuiți să transfere fișiere de rusifikaey în utf-8 (bine aici, în primul rând, am fost deja agitare Rusik la utf-8, și în al doilea rând, am verificat. Și cp1251 de la utf-8 pentru a distinge în stat). În general, nu este același lucru.
Mai era un răspuns. O figură, cu un dram de răsfăț adânc în cuvinte, verbe la axioma de care aveți nevoie pentru a afla ce tip de codificare a lucrat pe forum vechi, iar rusificarea spun distribuția corespunzătoare a traducerilor: utf-8 sau cp1251, în plus, el a spus că a dovedit că aceasta este singura opțiunea posibilă. Și asta nu mi-a fost deloc potrivit.
După ce am săpat mai mult pe forum și nu am găsit nimic util, am decis să nu fiu supărat înainte de timp și să nu cad în disperare. Încă mai aveam o metodă de "forță bruta".
Sa hotărât aplicarea forței brute din șablonul principal. Deschideți fișierul index.template.php. a văzut literalmente următoarele:
''
Acum rămâne să trecem peste cod și să aflăm unde are loc atribuirea codificării elementului dat al matricei. Excavările ulterioare au condus la fișierul Load.php și la piesa corespunzătoare de cod:
INSERTAȚI ÎN "Setări"
SET `variabila` = 'global_character_set',` valoare` = 'UTF-8';
Reîncărcați pagina forumului și găsiți cu satisfacție că totul a început să funcționeze corect (pe care, de fapt, l-am căutat).