CMS DataLife Engine - Система управления сайтами

olifus

Изменение имени загружаемого изображения

Рекомендуемые сообщения

В 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 , могу ли я как-то сам попробовать решить эту проблему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 минут назад, radrigo сказал:

Скажите, если появляется данная проблема, то она только в переименование файлов?Или проблемы могут быть ещё где-нибудь?

На локалях работает файловая система. Поэтому единственная проблема из за неправильной локали, это определение русских имен файлов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, celsoft сказал:

На локалях работает файловая система. Поэтому единственная проблема из за неправильной локали, это определение русских имен файлов.

Подскажите еще и, если у меня есть доступ к php.ini , могу ли я как-то сам попробовать решить эту проблему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, radrigo сказал:

Подскажите еще и, если у меня есть доступ к php.ini , могу ли я как-то сам попробовать решить эту проблему?

Локаль это серверный компонент, а не PHP интерпретатора. Переназначить ее можно через окружение апача. Самый простой способ это вообще внести изменение в языковые файлы определение локалей, как описано выше в этой теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 минут назад, celsoft сказал:

Локаль это серверный компонент, а не PHP интерпретатора. Переназначить ее можно через окружение апача. Самый простой способ это вообще внести изменение в языковые файлы определение локалей, как описано выше в этой теме.

Спасибо. Сделал уже как описано выше. Стало всё нормально. Однако скажите, стоит ли от поддержки хостинг-провайдера добиваться правильных настроек, чтобы заработала без изменения языковых файлов движка? Или это не имеет значения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
22 минуты назад, radrigo сказал:

Однако скажите, стоит ли от поддержки хостинг-провайдера добиваться правильных настроек, чтобы заработала без изменения языковых файлов движка?

Вам решать. Я например лично за правильные настройки, но хостинг может этого и не сделать, если например вы не одни на сервере и у вас shared а не vds

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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-системы.

 

Если потребуется изменение параметров работы услуги хостинга, пожалуйста, сообщите необходимую конфигурацию для проверки возможности ее установки.

 

Изменено пользователем radrigo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

locale -a | grep ru показывает наличие подготовленных локалей в системе для русского, а не значит что именно она установлена. Что показывает просто команда locale без параметров?, эта команда выведет непосредственно назначенные переменные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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=

 

Изменено пользователем radrigo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну все нормально, локаль стоит, я не вижу проблем. Видимо она где то еще меняется, мне уже сложно сказать почему до PHP интерпретатора доходит, может где в настройках Апача переназначается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, celsoft сказал:

Ну все нормально, локаль стоит, я не вижу проблем. Видимо она где то еще меняется, мне уже сложно сказать почему до PHP интерпретатора доходит, может где в настройках Апача переназначается.

Проблема на хостинге reg.ru. Причём на двух разных сайтах, расположенных на разных аккаунтах и разных тарифных планах.  Они утверждают что у них локали установлены правильно. Если я вам дам доступ вы сможете определить проблему? Есть возможность подключения через SSH.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 минуты назад, radrigo сказал:

Если я вам дам доступ вы сможете определить проблему?

Я не системный администратор. А это область настроек системного ПО сервера. Поставьте локаль в языковые файлы, если это решает вашу проблему. Я уже подробно описал почему локаль убрали из языковых файлов https://forum.dle-news.ru/topic/72145-изменение-имени-загружаемого-изображения/?do=findComment&comment=360920 но как показывает практика, людей у кого не настроена локаль больше, чем те у кого корректно работает, поэтому мы ее вернем в будущем, т.к. гораздо меньше приходится рассказывать как ее убрать или изменить, чем то как поставить.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно как-то доказать им что проблема именно у них? Что-то вроде этого. После чего они признали проблему и решили её.

 

Изменено пользователем radrigo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 минут назад, radrigo сказал:

А можно мне как-то доказать что проблема именно у них? Что-то вроде этого. После чего они признали проблему и решили её.

Если создать простой тестовый скрипт:

<?php

print_r(pathinfo('/путь к файлу/русскоеимя.jpg'));

Файл должен быть кодировкe UTF-8 как и ваш сайт. И если в результате будут разобрано имя и путь с обрезанием и неверно (например пропадет русскоеимя) , то локаль не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, celsoft сказал:

Если создать простой тестовый скрипт:


<?php

print_r(pathinfo('/путь к файлу/русскоеимя.jpg'));

Файл должен быть кодировкe UTF-8 как и ваш сайт. И если в результате будут разобрано имя и путь с обрезанием и неверно, то локаль не работает.

Вот что вывело. Это доказывает что локаль не работает, я правильно понял?

Array ( [dirname] => /путь к файлу [basename] => .jpg [extension] => jpg [filename] => ) 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 часов назад, radrigo сказал:

Это доказывает что локаль не работает, я правильно понял?

Все верно, видите имя пустое, значит локаль не русская UTF-8. То что я вам написал поставить переназначение локали в языковых файлов, это и есть принудительное назначение русского языка для UTF-8 и отмену настроек по умолчанию, но вам хостинг прислал, что у них итак все стоит по умолчанию корректно, и судя по тому что они написали, действительно все правильно, но где то, что то отменяет эти приведенные ими настройки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
50 минут назад, celsoft сказал:

Все верно, видите имя пустое, значит локаль не русская UTF-8. То что я вам написал поставить переназначение локали в языковых файлов, это и есть принудительное назначение русского языка для UTF-8 и отмену настроек по умолчанию, но вам хостинг прислал, что у них итак все стоит по умолчанию корректно, и судя по тому что они написали, действительно все правильно, но где то, что то отменяет эти приведенные ими настройки.

 

Собственно вот что они ответили, тоже самое, что было написано выше. Сейчас скачал архив движка 12.1, смотрю вы прописали по умолчанию в языковые файлы setlocale

Цитата

Команда locale выводит список локалей ssh. Чтобы локаль работала с интерпретатором PHP, необходимо задавать ее явно, то есть в скрипте используйте setlocale(LC_ALL, 'ru_RU.utf8');

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, radrigo сказал:

Собственно вот что они ответили, тоже самое, что было написано выше. Сейчас скачал архив движка 12.1, смотрю вы прописали по умолчанию в языковые файлы setlocale

Облегчаем себе работу, как я написал выше. Хотели сделать как правильно. Но жалоб на неправильные настройки больше, чем жалоб на то что setlocale вмешивается в другие сайты. Поэтому выбираем меньшее из зол :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти