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

Тема в разделе "PHP", создана пользователем pierrevk, 24 янв 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. pierrevk

    pierrevk Постоялец

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

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

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

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

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

    Как настроить сие?
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    как вариант используйте функцию lower в запросах в базу
    mysql lower
    или средствами php приводите к нужному регистру strtolower
     
  3. pierrevk

    pierrevk Постоялец

    Регистр.:
    22 сен 2009
    Сообщения:
    59
    Симпатии:
    5

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

    к тому же, lower не спасет еще и по той причине, что все файлы имеют имена типа FalCoN99_MC_forever.jpg - то есть адское сочетание регистров в стиле ЭМО!
     
  4. ADyDyka

    ADyDyka Создатель

    Регистр.:
    19 янв 2010
    Сообщения:
    26
    Симпатии:
    5
    У вас denwer стоит на widows, в windows имена файлов регистронезависимые, а под unix(linux) pic.jpg и Pic.jpg два абсолютно разных файла, которые могут существовать в одной папке.
    Как вариант написать простенький скрипт который все имена файлов в нужной вам папке приведет в нижний регистр, и использовать strtolower.
    Другой выход, если сервер выделенный и вы имеете полные права на него, то можно сделать регистронезависимой (но это кушает ресурсы) и это уже не в ветку php, т.к. php здесь не при чем.
     
  5. pierrevk

    pierrevk Постоялец

    Регистр.:
    22 сен 2009
    Сообщения:
    59
    Симпатии:
    5

    Кушает ресурсы, - такого мне не надо - значит стоит подумать над strtolower. Спасибо, внесли ясность.
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Самый лучший вариант :в цикле пройтись по директории картинок и все перевести в нижний регистр ..пять минут работы и нет больше проблемы...
     
  7. EnGeLs

    EnGeLs Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    87
    Симпатии:
    21
    Можно заменить все имена в таблице на маленькие
    PHP:
    UPDATE `my_tableSET `my_col` = LOWER my_col 
     
  8. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Проще всего хранить в той же базе данных и настоящее имя файла. Впрочем оно и так там должно хранится. А lower использовать только для ключа. Или хеш от lower для ключа
     
  9. legendar

    legendar Писатель

    Регистр.:
    9 дек 2008
    Сообщения:
    9
    Симпатии:
    1
    Да. Кушать будет, но не больше чем на той же винде с вашим денвером. Это файловая система у вас регистро-зависимая. в UNIX они почти все такие, а в WINDOWS там NTFS - регистронезависимая и соответственно тяжелее (более ресурсоемкая)
     
  10. paraped

    paraped Писатель

    Регистр.:
    25 июл 2009
    Сообщения:
    4
    Симпатии:
    0
    В пхп есть специальная функция для перевода строки в нижний регистр, кстати при составлении запросов на sql то же можно использовать функцию low().
     
Статус темы:
Закрыта.