Перейти к публикации

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


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

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

 

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

 

Спасибо.

 

 

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

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

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

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

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

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

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

Расширить  

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

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

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

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

Расширить  

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

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

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

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

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

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

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

Расширить  

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

Ссылка на сообщение
Поделиться на других сайтах
  31.01.2018 в 15: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 в 14: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"));

 

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

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

Расширить  

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

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

  31.01.2018 в 18:32, celsoft сказал:

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

Расширить  

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

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

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

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

Расширить  

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

 

  31.01.2018 в 19:11, holistic сказал:

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

Расширить  

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

 

  31.01.2018 в 19:11, holistic сказал:

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

Расширить  

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

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

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

Расширить  

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

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

LANG=en_US.UTF-8

а так:

LANG=ru_RU.UTF-8

 

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

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

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

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

Расширить  

Да

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

Да

Расширить  

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

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

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

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

Расширить  

нет не нужна

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

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

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

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

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

Расширить  

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

  Цитата

 

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

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

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

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

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

SetEnv LANG ru_RU.UTF-8

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

 

Расширить  

 

  31.01.2018 в 23:52, 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=
 

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

Расширить  

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

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

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

Расширить  

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

  Цитата

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

Расширить  

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

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

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

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

Расширить  

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

 

  01.02.2018 в 13:36, holistic сказал:

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

Расширить  

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

Ссылка на сообщение
Поделиться на других сайтах
  01.02.2018 в 14:41, 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"));

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

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

Расширить  

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

 

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

 

  01.02.2018 в 15:09, holistic сказал:

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

Расширить  

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

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

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

Расширить  

"Отлично"!

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

  Цитата

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

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

Расширить  

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

Ссылка на сообщение
Поделиться на других сайтах
  01.02.2018 в 16:57, 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 путь номер три через окружение Апача. Три разных пути. Это сообщение напишите им.

 

  01.02.2018 в 15:09, holistic сказал:

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

Расширить  

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

 

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

 

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

 

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

 

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

 

Ссылка на сообщение
Поделиться на других сайтах
  01.02.2018 в 17: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"));

в языках.

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

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

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...