Spletna stran uporablja piškotke za boljšo uporabniško izkušnjo in spremljanje statistike obiskov (Google Analytics).
Z nadaljno uporabo spletne strani ali klikom na "Strinjam se", se strinjate z uporabo piškotkov.
Piškotki in njihova uporaba

Synology DS411slim in case sensitivity

Objavil Blaž Kristan 11.12.2011 @ 00:47

Prvi je najbolj očiten: datotekam sem popravil imena, da so se sklada z vpisanimi. Ker pa v kodi nimam praktično nikjer reference na datoteke na disku sem to opravil v podatkovni bazi. Res je, datotek na disku nisem spreminjal/preimenoval!

Žal pa ta način ni bil najbolj primeren za popravljanje imen slik, ki se nahajajo v besedilih, saj je ročno popravljanje HTML kode besedila malce zamudnejše, pa še število besedil je precejšnje. Zato sem moral poiskati drugo metodo.

In sem jo našel z Apache modulom mod_speling. :) Ja, res piše speling.

K sreči je mod_speling.so priložen Apache strežniku v Synology DS411slim in mi ni bilo potrebno razbijat glave s kakšnim prevajanjem izvorne kode ali podobnimi telovadbami. Dovolj je bilo da sem v datoteko /usr/syno/apache/config/httpd.conf-user dodal 4 vrstice.

LoadModule speling_module modules/mod_speling.so
<IfModule mod_speling.c>
CheckCaseOnly on
CheckSpelling on
</IfModule>

Žal pa to kljub vsemu ni bilo dovolj, saj iz nekega razloga Apache ni hotel vklopiti spelling helperja. Zato sem v osnovno mapo spletne strani dodal .htaccess datoteko, v kateri sem ponovil:

CheckCaseOnly on
CheckSpelling on

To je pomagalo, da je spletni strežnik postal neobčutljiv na velikost črk datotek na disku.

Case sensitivity v MySQL

Druga zgodba je MySQL. Zakaj? Zaradi površno napisane aplikacije. :)

Pri MySQLu je zgodba podobna. Občutljiv je na velike in male črke, kar na Windows/Mac verziji ni običajno.

Nekaj Googlanja mi je dalo rešitev z nastavitvijo lower_case_table_names, ki pove MySQLu, kako naj upošteva velikost črk. Vrednosti pomenijo:

  • 0 - upošteva oz. razlikuje velike in male črke,
  • 1 - velike črke v imenih tabel pretvori v male,
  • 2 - ohrani velikost črk v imenih a jih ignorira.

Vrednost nastavitve lahko podamo v konfiguracijski datoteki (my.cnf oz. my.ini) ali preko startup parametrov. Prednastavljene konfiguracijske datoteke (primeri) se na DS411slim nahajajo na /usr/syno/mysql/share/mysql. MySQL pa išče konfiguracijo na lokaciji /etc/my.cnf. Torej sem najprej eno izmed prednastavljenih (my-small.cnf) kopiral na /etc in jo preimenoval ter poeditiral.

Tako sem najprej nastavil vrednost na 2, kot je običajno to na Macih, ter restartal MySQL. To naredimo z ukazom:

/usr/syno/etc.defaults/rc.d/S21mysql.sh restart

Začuda to ni dalo želenih rezultatov zato sem eksperimentiral še s spreminjanjem zagonske skripte, dodajanjem my.cnf na različne lokacije in, ko sem že skoraj obupal, na koncu popravil vrednost na 1.

lower_case_table_names=1

Po restartu MySQLa se je končno v aktualnih nastavitvah pojavila prava vrednost in sedaj male/velike črke niso več problem.

Komentarji

* Komentarje mora odobriti admin.