Synology DS411slim in case sensitivity
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
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.