День добрый.
Занимаюсь переносом сайта с Windows на freebsd.
Сайт удачно переехал, но обнаружил проблему которую не могу побороть.
Под виндой умные люди на сайт выкладывали картинки с русскими именами.
Похоже что админка сайта их не понимала, или по каким то другим причинам, эти файлы были сохранены на диск c именами в кракозябрах (в UTF-8).
В этих же кракозябрах видны в ссылках на эти картинки непосредственно на сайте под виндой.
Под freebsd сайт говорит что не может найти на диске нужного файла.
Сайт писан на PHP с использованием шаблонизатора smarty.
Там задейстрован Mysql и т.д.
Конечно было бы логично переименовать файлы и изменить в MYSQL ссылки на файлы, но в MYSQL эти ссылки хранятся в таком виде, что задача превратится в очень большую проблему (в базе ссылки и имена файлов текст, все в перемешку).
Так же можно через админку на текущем, рабочем сайте, переименовать эти картинки и загрузить назад на сайт.
Но их много, они лежат в разных местах и т.д. получится очередная проблема.
Выход один, если он возможен... Заставить сайт видеть то что уже есть на диске.
Имена файлов в UTF-8, при помощи convmv могу переименовывать в любую кодировку, но мне нужно видить то что лежит на диске в UTF-8, в кодировке винды cp-1251.
Если я через putty в mc смотрю на диск в кодировке cp1251 то вижу нужные мне имена этих корявых файлов.
Подскажите как заставить PHP смотреть на диск в cp1251?
Примеры из Google пробовал - не помогло ...
Может шаблонизатор сайта как то перекрывает мои настройки php ...
PHP5 и кодировка cp1251
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
PHP5 и кодировка cp1251
Последний раз редактировалось f_andrey 2010-11-05 13:12:09, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Re: PHP5 и кодировка cp1251
Немного продвинулся, в понимании причины проблемы.
Написал на PHP скрипт который отображает список файлов папки.
Был приятно удивлен, что файлы видятся в правильной кодировке.
Т.е. имя файла в ссылке сайта, совпадает с именем файла на диске.
Но !!!
В именах файлов на диске встречаются символы типа %20, вот такие спец символы PHP или Apache восприимает, к примеру, как пробел.
Получается что Apache не может найти именно такие файлы.
Незнаю есть ли выход из этой ситуации, но все же спрошу.
Как научить Apache или PHP видеть нормально такие файлы ?
Написал на PHP скрипт который отображает список файлов папки.
Был приятно удивлен, что файлы видятся в правильной кодировке.
Т.е. имя файла в ссылке сайта, совпадает с именем файла на диске.
Но !!!
В именах файлов на диске встречаются символы типа %20, вот такие спец символы PHP или Apache восприимает, к примеру, как пробел.
Получается что Apache не может найти именно такие файлы.
Незнаю есть ли выход из этой ситуации, но все же спрошу.
Как научить Apache или PHP видеть нормально такие файлы ?
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: PHP5 и кодировка cp1251
%20 это urlencoded пробел
правильнее переименовать файлы чтобы в именах вообще не было urlencoded частей
навскидку - что то типа этого
правильнее переименовать файлы чтобы в именах вообще не было urlencoded частей
навскидку - что то типа этого
Код: Выделить всё
sh -c 'find ./ | { while read str; do mv $str `echo $str | sed "s/%20/ /g"`; done;}'
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Re: PHP5 и кодировка cp1251
Ну это уже понятно, куда нужно двигать.FreeBSP писал(а):%20 это urlencoded пробел
правильнее переименовать файлы чтобы в именах вообще не было urlencoded частей
навскидку - что то типа этогоКод: Выделить всё
sh -c 'find ./ | { while read str; do mv $str `echo $str | sed "s/%20/ /g"`; done;}'
Только покоя не дает вопрос, ведь под Windows апач на диске нормально видел такие файлы ...
Под Windows у файлов такие же корявые названия, в unix они перенеслись без изменений...
Может есть опция какая нить для Apache на такие случаи?