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

olifus

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

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

Приветствую.

 

После обновления с 11.2 на 12.1 появилась проблема - при загрузке изображений в новость, некоторые слова из имени файла вырезаются или заменяются цифровым значением. Сначала подумал, что проблема в движке, но позже установил движок на open server на компьютере и там этой проблемы нет. Получается, что данная проблема на стороне сервера / хостинга. В чем может быть суть, в какую сторону настроек сервера смотреть?

 

Спасибо.

 

 

по домену - у меня в профиле много купленных лицензий.

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


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

Вы не писали недавно сегодня персональным сообщением? Если да, то я вам ответил на ваш вопрос персональным сообщением. Проблема у вас с установленными локалями для OS, у вас установлены локали без поддержки русского языка. Поэтому они и обработаться PHP интерпретатором не могут.

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


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

Вам нужно привести локаль вашего сервера в соответствие с той кодировкой в которой ваш сайт. На разных OS это делается по разному. Вот пример установки локали русского языка, для кодировки UTF-8 для CentOS http://dedicatesupport.com/content/nastroika-lokali-v-konsoli-v-centos  Если у вас нет доступа к этому то обратитесь в службу поддержки хостинга, для установки поддержки русского языка.

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


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

Ответил вам личным сообщением.

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


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

Вам нужно привести локаль вашего сервера в соответствие с той кодировкой в которой ваш сайт. На разных OS это делается по разному. Вот пример установки локали русского языка, для кодировки UTF-8 для CentOS http://dedicatesupport.com/content/nastroika-lokali-v-konsoli-v-centos  Если у вас нет доступа к этому то обратитесь в службу поддержки хостинга, для установки поддержки русского языка.

Проблема была несколько в ином - в переменной окружения LANG

Вопрос решен.

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


Ссылка на сообщение
Поделиться на другие сайты
В 1/26/2018 в 20:51, olifus сказал:

Проблема была несколько в ином - в переменной окружения LANG

И как же вы решили проблему?

У меня тоже вроде все русские локали есть, а вот русское название картинок (.jpg) частично обрезается, когда пользователь прикрепляет их к комментарию...

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


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

Кстати эта проблема может быть в частности из-за того, что например в языковых файлах (именно UTF-8 версия):
- adminpanel.lng
- website.lng
в самом низу файла может отсутствовать строка:

@setlocale(LC_ALL, array("ru_RU.UTF8", "ru_RU.UTF-8"));
 

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


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

И как же вы решили проблему?

объяснил ситуацию хостеру и тех.поддержка внесла необходимые настройки в сервер.

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


Ссылка на сообщение
Поделиться на другие сайты
В 31.01.2018 в 16:52, holistic сказал:

Кстати эта проблема может быть в частности из-за того, что например в языковых файлах (именно UTF-8 версия):
- adminpanel.lng
- website.lng
в самом низу файла может отсутствовать строка:

@setlocale(LC_ALL, array("ru_RU.UTF8", "ru_RU.UTF-8"));

Ставить setlocale в скриптах, не очень хорошее решение http://php.net/manual/ru/function.setlocale.php (смотрите описание выделенное красным) , это может вызвать сбои в работе соседних сайтов поэтому мы это и не поставили. Локали нужно ставить либо в настройках сервера, либо в настройках PHP директивой intl.default_locale если это нужно сделать на конкретный сайт http://de2.php.net/manual/en/intl.configuration.php#ini.intl.default-locale

 

В 31.01.2018 в 15:10, holistic сказал:

И как же вы решили проблему?

В ссылке что я дал http://dedicatesupport.com/content/nastroika-lokali-v-konsoli-v-centos описано изменение переменной окружения LANG

 

В крайнем случае если совсем нет возможности исправить настройки непосредственно сервера, можно попробовать внести в языковые файлы adminpanel.lng и website.lng в самом конце найти

?>

перед ней поставить

@setlocale(LC_ALL, array("ru_RU.UTF-8", "ru_RU.UTF8"));

 

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


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

это может вызвать сбои в работе соседних сайтов поэтому мы это и не поставили.

Какие именно сбои, если все сайты работают на одной кодировке?

Или в чем-то ином сбои?

43 минуты назад, celsoft сказал:

Локали нужно ставить либо в настройках сервера, либо в настройках PHP директивой intl.default_locale если это нужно сделать на конкретный сайт

Настройка Локали на сервере ничего не дала.

Настройка в PHP на конкретный сайт не представляется возможным, если несколько сайтов находятся на VPS - там один php.ini под все сайты...

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


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

Какие именно сбои, если все сайты работают на одной кодировке?

Вы это про себя говорите, что у вас сайты в одной кодировке? Не у всех же сайты в одной кодировке, на сервере может находится много разных сайтов, в разных кодировках и на разных движках. И как может повлиять изменение в одном скрипте на другие скрипты описано в документации PHP ссылку на которую я дал выше. Изменение в одном скрипте может привести к изменениям в других скриптах и сайтах.

 

1 час назад, holistic сказал:

Настройка Локали на сервере ничего не дала.

Она не может ничего не дать. Вы просто сделали неправильно и не изменили ее. Обратитесь к системному администратору вашего сервера, они вам все сделают.

 

1 час назад, holistic сказал:

Настройка в PHP на конкретный сайт не представляется возможным, если несколько сайтов находятся на VPS - там один php.ini под все сайты...

Все напрямую зависит от конфигурации сервера, далеко не всегда один php.ini на все сайты, он может быть и персональным под каждый сайт. Все зависит от того как вы конфигурируете сервер.

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


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

Она не может ничего не дать. Вы просто сделали неправильно и не изменили ее. Обратитесь к системному администратору вашего сервера, они вам все сделают.

Вы имеете в виду, что при запросе командой:

locale
нужно, чтобы было не:

LANG=en_US.UTF-8

а так:

LANG=ru_RU.UTF-8

 

И все другие значения в таблице, так же - ru_RU ?

Этого будет достаточно?

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


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

И все другие значения в таблице, так же - ru_RU ?

Да

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


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

Да

И после этого эта строка:

@setlocale(LC_ALL, array("ru_RU.UTF8", "ru_RU.UTF-8"));
не нужна будет в языковых файлах?

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


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

@setlocale(LC_ALL, array("ru_RU.UTF8", "ru_RU.UTF-8"));
не нужна будет в языковых файлах?

нет не нужна

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


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

нет не нужна

Только что настроили и получили:

 

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=
 

"А воз и ныне там..."

Что же не так, что еще нужно-то?

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


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

Что же не так, что еще нужно-то?

Вот ответ тех.поддержки по данной проблеме:

Цитата

 

К сожалению, проблема заключалась не в системной локали, а в том, что для php не была задана необходимая переменная окружения LANG.

Мы добавили переменную окружения LANG при помощи директивы Apache2 SetEnv.

Проверьте, пожалуйста, загрузку изображений сейчас.

Обратите, пожалуйста, внимание, что в данный момент для сайта site.ru используется ручная конфигурация, по этой причине, если Вы пожелаете изменить для него какие-либо настройки средствами панели, появится соответствующее предупреждение.

В случае, если изменения параметров сайта Вам все-же потребуется, Вам достаточно будет добавить следующую строку в конфигурацию Backend в панели управления:

SetEnv LANG ru_RU.UTF-8

Данная строка должна быть добавлена в секцию <VirtualHost 127.0.0.1:81>

 

 

8 часов назад, holistic сказал:

Только что настроили и получили:

 

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=
 

"А воз и ныне там..."

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

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


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

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

А вот, что мне ответила техподдержка:

Цитата

Судя по всему, проблема проявляется из-за плагина или встроенной функции загрузки файла, либо переименование происходит после загрузки файла на сервер, также средствами CMS.
Поэтому проблема вряд ли будет решена добавлением в виртуалхоста сайта указанной вами директивы, но мы можем выполнить данное действие. После добавления директивы потребуется перезагрузка веб-сервера

И вопрос - зачем разработчики DLE ступили на такой стрёмный путь?

Похоже разработчикам предстоит работа над решением этой проблемы на уровне самого скрипта, а не таких супер-специфических настроек сервера...

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


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

И вопрос - зачем разработчики DLE ступили на такой стрёмный путь?

Какой путь? Загрузка файлов на сервер одинакова лет уже как как пятнадцать минимум и вообще никогда не менялась. Конечно переименование файлов происходит в скрипте и всегда происходило. И это не какой то новый путь.

 

1 час назад, holistic сказал:

а не таких супер-специфических настроек сервера...

Нормальные, это не значит супер-специфические. Эти данные обрабатывает PHP интерпретатор, встроенными стандартными функциями PHP, а не какими то собственными функциями DLE. И чтобы стандартные функции PHP корректно поддерживали русские символы в именах и путях файлов, и требуются корректные настройки сервера.

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


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

Какой путь? Загрузка файлов на сервер одинакова лет уже как как пятнадцать минимум и вообще никогда не менялась. Конечно переименование файлов происходит в скрипте и всегда происходило. И это не какой то новый путь.

 

Нормальные, это не значит супер-специфические. Эти данные обрабатывает PHP интерпретатор, встроенными стандартными функциями PHP, а не какими то собственными функциями DLE. И чтобы стандартные функции PHP корректно поддерживали русские символы в именах и путях файлов, и требуются корректные настройки сервера.

Загрузка - да. Но вы ступили на путь принудительного избавления директивы в языковых файлах.

Более того, только что мне на сервере внесли также и это (как написано выше):

Цитата

SetEnv LANG ru_RU.UTF-8

Данная строка должна быть добавлена в секцию <VirtualHost 127.0.0.1:81>

И никакого эффекта это также не возымело!

Т.е. ни настройка Locale, ни настройка в конфигах Апача - ничего не дает.

Дает только одно нормальный эффект:

Цитата

лет уже как как пятнадцать минимум и вообще никогда не менялась

а это только наличие в языках:

@setlocale(LC_ALL, array("ru_RU.UTF8", "ru_RU.UTF-8"));

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


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

Загрузка - да. Но вы ступили на путь принудительного избавления директивы в языковых файлах.

Ерунда. Мы ступили на путь следования рекомендаций разработчиков PHP интерпретатора. Принудительным может быть только добавление код, а не удаление кода принудительной конфигурации.  А вот продавать на российском рынке сервера и хостинг, и не настроить его корректно на поддержку русского языка, продавая по сути дефолтные английские настройки, это уже простите моветон со стороны хостинг провайдера. Если у них нет возможности и умений настроить локаль, пусть тогда не продают сервера тем у кого имена файлов на компьютерах русскими буквами. Повторюсь еще раз, DLE использует стандартные функции PHP, это проблема в работе стандартных функций PHP а не DLE, настройки для них следует делать в настройках сервера, как рекомендуют разработчики PHP интерпретатора.

 

А вы пишите нам: у нас "кривой" хостинг, зачищайте за ним его ошибки, и создайте создайте ошибки другим. Я вам написал уже что эти директивы могут сбить работу других сайтов на сервере, поэтому их там нет по умолчанию. Скриптом же пользуются не только те кто пользуется "кривыми" настройками сервера, но и те кому эти локали мешают и сбрасывают настройки по всему серверу мешая соседним сайтам. И убрали мы их потому что были жалобы и потому что разработчики PHP интерпретатора не рекомендуют так делать, и рекомендуют делать это только осторожно и в крайних случаях. Кривые настройки сервера, это крайний случай, а не нормальный случай.

 

12 минуты назад, holistic сказал:

Т.е. ни настройка Locale, ни настройка в конфигах Апача - ничего не дает.

Неумение производить настройки сервера, не значит что не работает.

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


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

Неумение производить настройки сервера, не значит что не работает.

"Отлично"!

Вот что мне ответили:

Цитата

Нам неизвестны требования скрипта, который осуществляет данное преобразование, поэтому укажите следующие данные

1. Предоставьте полные технические требования к CMS/скрипту, с указанием требуемых модулей.
2. На каких версиях php работает эти скрипты. У вас сейчас версия 5.6.32, режим работы php как FastCGI
3. Локаль на сервере настроена и для консоли и для php.

И что же ответить им, скажите на милость?

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


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

Нам неизвестны требования скрипта, который осуществляет данное преобразование, поэтому укажите следующие данные

1. Предоставьте полные технические требования к CMS/скрипту, с указанием требуемых модулей.
2. На каких версиях php работает эти скрипты. У вас сейчас версия 5.6.32, режим работы php как FastCGI
3. Локаль на сервере настроена и для консоли и для php.

Да нет никакого преобразования. Есть стандартные функции 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 путь номер три через окружение Апача. Три разных пути. Это сообщение напишите им.

 

2 часа назад, holistic сказал:

Но вы ступили на путь принудительного избавления директивы в языковых файлах.

На самом деле все очень просто, есть два пути и два выбора. Либо переназначить через скрипт, либо правильно сконфигурировать сервер.

 

Есть две категории людей. Первая категория которая на сервере имеет разные сайты разных языков, на разных скриптов, которые конфигурируют каждый домен корректно непосредственно под язык что используют. И тут мы установив setlocale принудительно, нарушаем все их настройки для других сайтов, их сайты работают некорректно, они пишут нам жалобы: Что же вы делаете, вы своим setlocale сбиваете работу других сайтов, уберите и не делайте этого.

 

И есть вторая категория людей, которые поставили свой сайт на обычный VDS который получили с базовыми настройками, которые естественно сделаны на английский. И пишут нам: ребята что вы делаете, у нас тут все настроено на английский, поменять сами не можем, не умеем и т.д. Решайте эту проблему за нас, установите принудительно setlocale. 

 

А теперь вопрос: Чью сторону мы должны выбрать? Если автоматически универсально и с гарантированно рабочим результатом, этого сделать нельзя?

 

Если нет возможности поменять настройки, ну поставьте setlocale в языковые файлы, ведь вам написали выше как нужно делать, но это не значит что отсутствие setlocale это неправильный путь. Потому как непонятно какой из путей правильней и кто из этих двух групп людей прав.

 

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


Ссылка на сообщение
Поделиться на другие сайты
В 2/1/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(LC_ALL, array("ru_RU.UTF8", "ru_RU.UTF-8"));

в языках.

Не знаю, что уже сказать...

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти