radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 В 01.02.2018 в 19:14, celsoft сказал: Да нет никакого преобразования. Есть стандартные функции PHP, такие как parse_url http://php.net/manual/ru/function.parse-url.php , dirname http://php.net/manual/ru/function.dirname.php , pathinfo http://php.net/manual/ru/function.pathinfo.php которые напрямую зависят от установленной локали сервера. И возвращают результаты по разному в зависимости от того какая локаль установлена. Поэтому для работы этих функций необходимо задать переменную окружения с русским языком и убедится что локаль для русского языка вообще присутствует на сервере и установить ее. Есть три пути установки локали и переменных окружения. Путь номер раз http://dedicatesupport.com/content/nastroika-lokali-v-konsoli-v-centos путь номер два http://php.net/manual/ru/intl.configuration.php путь номер три через окружение Апача. Три разных пути. Это сообщение напишите им. На самом деле все очень просто, есть два пути и два выбора. Либо переназначить через скрипт, либо правильно сконфигурировать сервер. Есть две категории людей. Первая категория которая на сервере имеет разные сайты разных языков, на разных скриптов, которые конфигурируют каждый домен корректно непосредственно под язык что используют. И тут мы установив setlocale принудительно, нарушаем все их настройки для других сайтов, их сайты работают некорректно, они пишут нам жалобы: Что же вы делаете, вы своим setlocale сбиваете работу других сайтов, уберите и не делайте этого. И есть вторая категория людей, которые поставили свой сайт на обычный VDS который получили с базовыми настройками, которые естественно сделаны на английский. И пишут нам: ребята что вы делаете, у нас тут все настроено на английский, поменять сами не можем, не умеем и т.д. Решайте эту проблему за нас, установите принудительно setlocale. А теперь вопрос: Чью сторону мы должны выбрать? Если автоматически универсально и с гарантированно рабочим результатом, этого сделать нельзя? Если нет возможности поменять настройки, ну поставьте setlocale в языковые файлы, ведь вам написали выше как нужно делать, но это не значит что отсутствие setlocale это неправильный путь. Потому как непонятно какой из путей правильней и кто из этих двух групп людей прав. Подскажите еще и, если у меня есть доступ к php.ini , могу ли я как-то сам попробовать решить эту проблему? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 20 минут назад, radrigo сказал: Скажите, если появляется данная проблема, то она только в переименование файлов?Или проблемы могут быть ещё где-нибудь? На локалях работает файловая система. Поэтому единственная проблема из за неправильной локали, это определение русских имен файлов. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 1 минуту назад, celsoft сказал: На локалях работает файловая система. Поэтому единственная проблема из за неправильной локали, это определение русских имен файлов. Подскажите еще и, если у меня есть доступ к php.ini , могу ли я как-то сам попробовать решить эту проблему? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 3 минуты назад, radrigo сказал: Подскажите еще и, если у меня есть доступ к php.ini , могу ли я как-то сам попробовать решить эту проблему? Локаль это серверный компонент, а не PHP интерпретатора. Переназначить ее можно через окружение апача. Самый простой способ это вообще внести изменение в языковые файлы определение локалей, как описано выше в этой теме. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 17 минут назад, celsoft сказал: Локаль это серверный компонент, а не PHP интерпретатора. Переназначить ее можно через окружение апача. Самый простой способ это вообще внести изменение в языковые файлы определение локалей, как описано выше в этой теме. Спасибо. Сделал уже как описано выше. Стало всё нормально. Однако скажите, стоит ли от поддержки хостинг-провайдера добиваться правильных настроек, чтобы заработала без изменения языковых файлов движка? Или это не имеет значения? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 22 минуты назад, radrigo сказал: Однако скажите, стоит ли от поддержки хостинг-провайдера добиваться правильных настроек, чтобы заработала без изменения языковых файлов движка? Вам решать. Я например лично за правильные настройки, но хостинг может этого и не сделать, если например вы не одни на сервере и у вас shared а не vds Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 (изменено) 1 час назад, celsoft сказал: Вам решать. Я например лично за правильные настройки, но хостинг может этого и не сделать, если например вы не одни на сервере и у вас shared а не vds Вот что мне ответили в поддержки хостинга. Можете подсказать что мне им ответить? Что конкретно попросить поменять? Цитата Здравствуйте! На физическом сервере, где расположена услуга вашего хостинга локаль UTF-8 для кириллистических символов установлена, полный список: bash-4.1$ locale -a | grep ru ru_RU ru_RU.iso88595 ru_RU.koi8r ru_RU.utf8 russian ru_UA ru_UA.koi8u ru_UA.utf8 Переменная LANG установлена в значение ru_RU.UTF-8: bash-4.1$ printenv LANG ru_RU.UTF-8 В первую очередь, для решения подобного вопроса мы рекомендуем вам обратиться к специалистам, которые занимались разработкой вашего сайта. Кроме того, интересующую вас информацию вы можете найти на тематических ресурсах, посвящённых разработке используемой вами CMS-системы. Если потребуется изменение параметров работы услуги хостинга, пожалуйста, сообщите необходимую конфигурацию для проверки возможности ее установки. Изменено 13 февраля 2018 пользователем radrigo Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 locale -a | grep ru показывает наличие подготовленных локалей в системе для русского, а не значит что именно она установлена. Что показывает просто команда locale без параметров?, эта команда выведет непосредственно назначенные переменные. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 (изменено) 34 минуты назад, celsoft сказал: locale -a | grep ru показывает наличие подготовленных локалей в системе для русского, а не значит что именно она установлена. Что показывает просто команда locale без параметров?, эта команда выведет непосредственно назначенные переменные. Вот их ответ. Можете что-нибудь посоветовать? Цитата Запрошенная вами информация представлена ниже: bash-4.1$ locale LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL= Изменено 13 февраля 2018 пользователем radrigo Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 Ну все нормально, локаль стоит, я не вижу проблем. Видимо она где то еще меняется, мне уже сложно сказать почему до PHP интерпретатора доходит, может где в настройках Апача переназначается. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 4 минуты назад, celsoft сказал: Ну все нормально, локаль стоит, я не вижу проблем. Видимо она где то еще меняется, мне уже сложно сказать почему до PHP интерпретатора доходит, может где в настройках Апача переназначается. Проблема на хостинге reg.ru. Причём на двух разных сайтах, расположенных на разных аккаунтах и разных тарифных планах. Они утверждают что у них локали установлены правильно. Если я вам дам доступ вы сможете определить проблему? Есть возможность подключения через SSH. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 13 минуты назад, radrigo сказал: Если я вам дам доступ вы сможете определить проблему? Я не системный администратор. А это область настроек системного ПО сервера. Поставьте локаль в языковые файлы, если это решает вашу проблему. Я уже подробно описал почему локаль убрали из языковых файлов https://forum.dle-news.ru/topic/72145-изменение-имени-загружаемого-изображения/?do=findComment&comment=360920 но как показывает практика, людей у кого не настроена локаль больше, чем те у кого корректно работает, поэтому мы ее вернем в будущем, т.к. гораздо меньше приходится рассказывать как ее убрать или изменить, чем то как поставить. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 (изменено) А можно как-то доказать им что проблема именно у них? Что-то вроде этого. После чего они признали проблему и решили её. Изменено 13 февраля 2018 пользователем radrigo Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 18 минут назад, radrigo сказал: А можно мне как-то доказать что проблема именно у них? Что-то вроде этого. После чего они признали проблему и решили её. Если создать простой тестовый скрипт: <?php print_r(pathinfo('/путь к файлу/русскоеимя.jpg')); Файл должен быть кодировкe UTF-8 как и ваш сайт. И если в результате будут разобрано имя и путь с обрезанием и неверно (например пропадет русскоеимя) , то локаль не работает. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 4 минуты назад, celsoft сказал: Если создать простой тестовый скрипт: <?php print_r(pathinfo('/путь к файлу/русскоеимя.jpg')); Файл должен быть кодировкe UTF-8 как и ваш сайт. И если в результате будут разобрано имя и путь с обрезанием и неверно, то локаль не работает. Вот что вывело. Это доказывает что локаль не работает, я правильно понял? Array ( [dirname] => /путь к файлу [basename] => .jpg [extension] => jpg [filename] => ) Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 13 февраля 2018 Рассказать Опубликовано: 13 февраля 2018 Отослал им. Посмотрим что они сделают Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 14 февраля 2018 Рассказать Опубликовано: 14 февраля 2018 9 часов назад, radrigo сказал: Это доказывает что локаль не работает, я правильно понял? Все верно, видите имя пустое, значит локаль не русская UTF-8. То что я вам написал поставить переназначение локали в языковых файлов, это и есть принудительное назначение русского языка для UTF-8 и отмену настроек по умолчанию, но вам хостинг прислал, что у них итак все стоит по умолчанию корректно, и судя по тому что они написали, действительно все правильно, но где то, что то отменяет эти приведенные ими настройки. Цитата Ссылка на сообщение Поделиться на других сайтах
radrigo 182 Опубликовано: 14 февраля 2018 Рассказать Опубликовано: 14 февраля 2018 50 минут назад, celsoft сказал: Все верно, видите имя пустое, значит локаль не русская UTF-8. То что я вам написал поставить переназначение локали в языковых файлов, это и есть принудительное назначение русского языка для UTF-8 и отмену настроек по умолчанию, но вам хостинг прислал, что у них итак все стоит по умолчанию корректно, и судя по тому что они написали, действительно все правильно, но где то, что то отменяет эти приведенные ими настройки. Собственно вот что они ответили, тоже самое, что было написано выше. Сейчас скачал архив движка 12.1, смотрю вы прописали по умолчанию в языковые файлы setlocale Цитата Команда locale выводит список локалей ssh. Чтобы локаль работала с интерпретатором PHP, необходимо задавать ее явно, то есть в скрипте используйте setlocale(LC_ALL, 'ru_RU.utf8'); Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 14 февраля 2018 Рассказать Опубликовано: 14 февраля 2018 3 минуты назад, radrigo сказал: Собственно вот что они ответили, тоже самое, что было написано выше. Сейчас скачал архив движка 12.1, смотрю вы прописали по умолчанию в языковые файлы setlocale Облегчаем себе работу, как я написал выше. Хотели сделать как правильно. Но жалоб на неправильные настройки больше, чем жалоб на то что setlocale вмешивается в другие сайты. Поэтому выбираем меньшее из зол Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.