Регистрозависимость запросов

Статус
В этой теме нельзя размещать новые ответы.

pierrevk

Постоялец
Регистрация
22 Сен 2009
Сообщения
59
Реакции
5
Как известно, на unix в именах файлов и папок имеет значение регистр букв.

Могу ли я что-то предпринять, чтобы по запросу, следующему из базы данных - TE7597C1_MED.jpg (все буквы заглавные) открывался бы файл te7597c1_meD.jpg (имя то же самое, но буквы в ином регистре!!!!).

Как чисто технически эту регистрозависимость игнорировать?

Сейчас получается, что файлы есть на сервере, но их имена, как и имена папок, их содержащих, записаны в иных регистрах и я получаю в ответ 404 Not Found.

...А вот на денвере такой ошибки нет - всё в порядке - файлы отображаются.

Как настроить сие?
 
как вариант используйте функцию lower в запросах в базу

или средствами php приводите к нужному регистру strtolower
 
как вариант используйте функцию lower в запросах в базу
*** скрытое содержание ***
или средствами php приводите к нужному регистру strtolower


lower не подойдет.
Нужна настройка сервера, нужно вовсе отучить сервер от регистрозависимости.
На сайте, с которого получена информация и на денвере все корректно отображается. Думаю это связано с тем, что каким-то образом где-то настроено иначе.

к тому же, lower не спасет еще и по той причине, что все файлы имеют имена типа FalCoN99_MC_forever.jpg - то есть адское сочетание регистров в стиле ЭМО!
 
lower не подойдет.
Нужна настройка сервера, нужно вовсе отучить сервер от регистрозависимости.
На сайте, с которого получена информация и на денвере все корректно отображается. Думаю это связано с тем, что каким-то образом где-то настроено иначе.
к тому же, lower не спасет еще и по той причине, что все файлы имеют имена типа FalCoN99_MC_forever.jpg - то есть адское сочетание регистров в стиле ЭМО!
У вас denwer стоит на widows, в windows имена файлов регистронезависимые, а под unix(linux) pic.jpg и Pic.jpg два абсолютно разных файла, которые могут существовать в одной папке.
Как вариант написать простенький скрипт который все имена файлов в нужной вам папке приведет в нижний регистр, и использовать strtolower.
Другой выход, если сервер выделенный и вы имеете полные права на него, то можно сделать регистронезависимой (но это кушает ресурсы) и это уже не в ветку php, т.к. php здесь не при чем.
 
У вас denwer стоит на widows, в windows имена файлов регистронезависимые, а под unix(linux) pic.jpg и Pic.jpg два абсолютно разных файла, которые могут существовать в одной папке.
Как вариант написать простенький скрипт который все имена файлов в нужной вам папке приведет в нижний регистр, и использовать strtolower.
Другой выход, если сервер выделенный и вы имеете полные права на него, то можно сделать регистронезависимой (но это кушает ресурсы) и это уже не в ветку php, т.к. php здесь не при чем.


Кушает ресурсы, - такого мне не надо - значит стоит подумать над strtolower. Спасибо, внесли ясность.
 
Самый лучший вариант :в цикле пройтись по директории картинок и все перевести в нижний регистр ..пять минут работы и нет больше проблемы...
 
Можно заменить все имена в таблице на маленькие
PHP:
UPDATE `my_table` SET `my_col` = LOWER ( my_col )
 
Проще всего хранить в той же базе данных и настоящее имя файла. Впрочем оно и так там должно хранится. А lower использовать только для ключа. Или хеш от lower для ключа
 
Кушает ресурсы, - такого мне не надо - значит стоит подумать над strtolower. Спасибо, внесли ясность.

Да. Кушать будет, но не больше чем на той же винде с вашим денвером. Это файловая система у вас регистро-зависимая. в UNIX они почти все такие, а в WINDOWS там NTFS - регистронезависимая и соответственно тяжелее (более ресурсоемкая)
 
В пхп есть специальная функция для перевода строки в нижний регистр, кстати при составлении запросов на sql то же можно использовать функцию low().
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху