Давно у меня были проблемы на ПХП с функциями меняющими регистр текста, всегда все работало наоборот (не помогала даже функция сетлокале). Но вот я переехал на новый сервер и думал данную проблему теперь забуду навсегда - но не тут-то было! Все тоже самое!
По умолчанию от сервера (Цент ОС) идет кодировка: en_US.UTF-8, она корректно обрабатывает только английские буквы. Русские вообще игнорирует..
С горем пополам, перештрудив кучу мануалов в сети, мне удалось самостоятельно познать что такое путти, ССХ и т.д. И получилось установить на сервер нужную мне локаль: ru_RU.CP1251, при подключении которой (через команду: setlocale(LC_CTYPE, 'ru_RU.cp1251'); в начале каждого ПХП скрипта) все стало работать и обрабатываться как надо!
=============
Вообще шикарно все, если бы не одно НО: это действие (вызов смены локали) нужно делать в каждом ПХП скрипте, это трудоемко, лишне-гемморно и мне кажется - не правильно.
Вопрос: Как сделать чтобы сервер по умолчанию отдавал эту локаль? Делается ли вообще это? И стоит ли, или все через "сетлокале" это и делают?
Сколько не пробовал вариантов и инструкций ничего не помогает Кто нибудь может подсказать действительно рабочий вариант?
(Добавление)
Вот что проделывал в ПУТТИ в последний раз, и вроде по логу все удалось в конце, но по факту все на том же месте... (ПС: понимаю что там может быть много лишних действий, или вообще не нужных - но прошу не злиться - я 1 раз с этим путти работаю)
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- login as: root
- root@135.314.131.111's password:
- Last login: Tue Oct 21 21:09:17 2014 from 185.14.29.133
- [root@vmer ~]# locale
- LANG=en_US.UTF-8
- LC_CTYPE="en_US.UTF-8"
- LC_NUMERIC="en_US.UTF-8"
- LC_TIME="en_US.UTF-8"
- LC_COLLATE="en_US.UTF-8"
- LC_MONETARY="en_US.UTF-8"
- LC_MESSAGES="en_US.UTF-8"
- LC_PAPER="en_US.UTF-8"
- LC_NAME="en_US.UTF-8"
- LC_ADDRESS="en_US.UTF-8"
- LC_TELEPHONE="en_US.UTF-8"
- LC_MEASUREMENT="en_US.UTF-8"
- LC_IDENTIFICATION="en_US.UTF-8"
- LC_ALL=
- [root@vmer ~]# cd /usr/share/i18n
- [root@vmer i18n]# localedef -c -f CP1251 -i ru_RU /usr/lib/locale/ru_RU.cp1251 (# localedef - f CP1251 -i ru_RU ru_RU.cp1251)
- -bash: syntax error near unexpected token `('
- [root@vmer i18n]# localedef -c -f CP1251 -i ru_RU /usr/lib/locale/ru_RU.cp1251
- [root@vmer i18n]# localedef - f CP1251 -i ru_RU ru_RU.cp1251
- Try `localedef --help' or `localedef --usage' for more information.
- [root@vmer i18n]# localedef --help
- Usage: localedef [OPTION...] NAME
- or: localedef [OPTION...] [--add-to-archive|--delete-from-archive] FILE...
- or: localedef [OPTION...] --list-archive [FILE]
- Compile locale specification
- Input Files:
- -f, --charmap=FILE Symbolic character names defined in FILE
- -i, --inputfile=FILE Source definitions are found in FILE
- -u, --repertoire-map=FILE FILE contains mapping from symbolic names to UCS4
- values
- Output control:
- -c, --force Create output even if warning messages were issued
- --old-style Create old-style tables
- --posix Be strictly POSIX conform
- --prefix=PATH Optional output file prefix
- --quiet Suppress warnings and information messages
- -v, --verbose Print more messages
- Archive control:
- --add-to-archive Add locales named by parameters to archive
- -A, --alias-file=FILE locale.alias file to consult when making archive
- --delete-from-archive Remove locales named by parameters from archive
- --list-archive List content of archive
- --no-archive Don't add new data to archive
- --replace Replace existing archive content
- -?, --help Give this help list
- --usage Give a short usage message
- -V, --version Print program version
- Mandatory or optional arguments to long options are also mandatory or optional
- for any corresponding short options.
- System's directory for character maps : /usr/share/i18n/charmaps
- repertoire maps: /usr/share/i18n/repertoiremaps
- locale path : /usr/lib/locale:/usr/share/i18n
- For bug reporting instructions, please see:
- <http://www.gnu.org/software/libc/bugs.html>.
- [root@vmer i18n]# locale
- LANG=en_US.UTF-8
- LC_CTYPE="en_US.UTF-8"
- LC_NUMERIC="en_US.UTF-8"
- LC_TIME="en_US.UTF-8"
- LC_COLLATE="en_US.UTF-8"
- LC_MONETARY="en_US.UTF-8"
- LC_MESSAGES="en_US.UTF-8"
- LC_PAPER="en_US.UTF-8"
- LC_NAME="en_US.UTF-8"
- LC_ADDRESS="en_US.UTF-8"
- LC_TELEPHONE="en_US.UTF-8"
- LC_MEASUREMENT="en_US.UTF-8"
- LC_IDENTIFICATION="en_US.UTF-8"
- LC_ALL=
- [root@vmer i18n]# export LANG=ru_RU.cp1251
- [root@vmer i18n]# locale
- LANG=ru_RU.cp1251
- LC_CTYPE="ru_RU.cp1251"
- LC_NUMERIC="ru_RU.cp1251"
- LC_TIME="ru_RU.cp1251"
- LC_COLLATE="ru_RU.cp1251"
- LC_MONETARY="ru_RU.cp1251"
- LC_MESSAGES="ru_RU.cp1251"
- LC_PAPER="ru_RU.cp1251"
- LC_NAME="ru_RU.cp1251"
- LC_ADDRESS="ru_RU.cp1251"
- LC_TELEPHONE="ru_RU.cp1251"
- LC_MEASUREMENT="ru_RU.cp1251"
- LC_IDENTIFICATION="ru_RU.cp1251"
- LC_ALL=
- [root@vmer i18n]# system-config-language
- -bash: system-config-language: ------- -- -------
- [root@vmer i18n]# restart
- restart: missing job name
- Try `restart --help' for more information.
- [root@vmer i18n]#
- Broadcast message from root@vmer.vds
- (unknown) at 2:08 ...
- The system is going down for reboot NOW!