1nSane 1 Опубликовано: 19 мая 2012 Рассказать Опубликовано: 19 мая 2012 Недавно проявилась проблема: В админке DLE пропал весь текст на русском языке из новостей. Смотрите картинку, где есть русские символы, там теперь пустота, в теле новостей аналогично. На фронтэнде не сказалось, все отображается верно. Есть 2 сайта, на движках ДЛЕ 9.2 и 9.5 (9.6) - имеют одинаковые симптомы. В исходном коде страницы все пусто, т.е. русского языка нет. Версии ДЛЕ до 9.2 вообще не завелись. Кто сталкивался? Случилось после обновления до РНР 5.4.3. Во фронтэнде же все ОК, глючит только админка... Также выдает постоянно ошибку (при апгрейде БД, при попытке создания резервной копии и т.д.): mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. (8192) Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 19 мая 2012 Рассказать Опубликовано: 19 мая 2012 юзайте mysqli, ведь mysql устарело Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 19 мая 2012 Рассказать Опубликовано: 19 мая 2012 При этом на сервере PHP должен быть собран как с MySQL расширением, так и с MySQLi расширением. Использовать линейку PHP 5.4 крайне не рекомендуется, это еще сырая линейка и много багов в самих стандартных функциях PHP. Также выдает постоянно ошибку (при апгрейде БД, при попытке создания резервной копии и т.д.): mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. (8192) Откройте файл engine/inc/dumper.php найдите mysql_escape_string замените на mysql_real_escape_string 1 Цитата Ссылка на сообщение Поделиться на других сайтах
1nSane 1 Опубликовано: 19 мая 2012 Рассказать Опубликовано: 19 мая 2012 Автор PHP собран с поддержкой MySQL и MySQLi, и MySQLi использую уже больше года. Или в DLE еще где-то надо принудительно прописать использование MySQLi? ибо настроек я не нашел... Как и описания данной проблемы в сети вообще. С бекапом вопрос решил, спасибо, а вот с пропажей русского языка - пока нет. Вот интересно, если конвертировать в utf8, появится он или нет... Версия DataLife Engine: 9.6 Тип лицензии скрипта: Лицензия активирована Режим работы сайта: Включен Операционная система: Linux 2.6.32-5-686-bigmem Версия PHP: 5.4.3-1~dotdeb.0 Версия MySQL: 5.1.58-1~dotdeb.1-log MySQLi Информация о GD: GD Version: bundled (2.0.34 compatible), FreeType Support: Enabled, FreeType Linkage: with freetype, T1Lib Support: Enabled, GIF Read Support: Enabled, GIF Create Support: Enabled, JPEG Support: Enabled, PNG Support: Enabled, WBMP Support: Enabled, XPM Support: Enabled, XBM Support: Enabled, JIS-mapped Japanese Font Support: Disabled, Module mod_rewrite Включен Безопасный режим: Выключен Выделено оперативной памяти: 128M Отключенные функции: Неопределено Максимальный размер загружаемого файла: 2 Mb Размер свободного места на диске: 262.88 Gb 1 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 20 мая 2012 Рассказать Опубликовано: 20 мая 2012 а вот с пропажей русского языка - пока нет. смотрите есть ли он у вас в БД, возможно у вас проблемы в кодировке БД Цитата Ссылка на сообщение Поделиться на других сайтах
1nSane 1 Опубликовано: 20 мая 2012 Рассказать Опубликовано: 20 мая 2012 (изменено) Автор смотрите есть ли он у вас в БД, возможно у вас проблемы в кодировке БД Текст на месте, во фронтенде все ОК (поэтому я и не рву волосы на голове, посетители тексты видят, будто все как раньше), более того, отправка с помощью софта проходит на ура. Плагины на 9.5 тоже добавляли отлично (сейчас их под 9.6 переписывать буду). НЕ работает ТОЛЬКО админка... если смотреть исходный код страницы, то там пусто: // вот тут название должно быть на русском 19.05.2012 - <a title="Редактировать данную новость" class="list" href="/admin.php?mod=editnews&action=editnews&id=46380"></a> // а тут на английском (видно) 19.05.2012 - <a title="Редактировать данную новость" class="list" href="/admin.php?mod=editnews&action=editnews&id=46381">How to work with AdSense (2012)</a> Изменено 20 мая 2012 пользователем 1nSane Цитата Ссылка на сообщение Поделиться на других сайтах
zMey 2 Опубликовано: 20 мая 2012 Рассказать Опубликовано: 20 мая 2012 Столкнулся с той же проблемой. Как я понял проблема из-за удаления некоторых функций в PHP 5.4 http://www.php.net/manual/ru/migration54.incompatible.php Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 20 мая 2012 Рассказать Опубликовано: 20 мая 2012 Столкнулся с той же проблемой. Как я понял проблема из-за удаления некоторых функций в PHP 5.4 Не правильно поняли, данные функции не используются при показе новостей в админпанели скрипта. 1nSane, Давайте доступ по FTP и к админпанели скрипта, нужно визуально смотреть на вашем сервере, в какой функции у вас сбой. Цитата Ссылка на сообщение Поделиться на других сайтах
1nSane 1 Опубликовано: 20 мая 2012 Рассказать Опубликовано: 20 мая 2012 Автор Не правильно поняли, данные функции не используются при показе новостей в админпанели скрипта. 1nSane, Давайте доступ по FTP и к админпанели скрипта, нужно визуально смотреть на вашем сервере, в какой функции у вас сбой. Спасибо, но я нашел причину, в файле /inc/editnews.php строка 185 (в DLE 9.6) $title = htmlspecialchars( stripslashes( $title ), ENT_QUOTES ); Вот ее комментирование возвращает русский язык, буду дальше копать Да, теперь нужно указывать кодировку: $title = htmlspecialchars( stripslashes( $title ), ENT_QUOTES, 'cp1251' );[/code] вот так тоже работает... буду смотреть где еще такие же куски кода... Еще в /classes/parse.php строка 506 (decodeBBcodes): [CODE]if (!$this->safe_mode AND $this->edit_mode) $txt = htmlspecialchars( $txt, ENT_QUOTES, 'cp1251' );[/code] Буду искать дальше... Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 21 мая 2012 Рассказать Опубликовано: 21 мая 2012 Пока непонятно, является ли это багом со стороны PHP или нет, или теперь обнуление строки запланированное ими действие. Мне нужно связаться с разработчиками и получить от них ответ. Этот параметр присутствует еще с линейки PHP 4.1 и он никогда не обнулял строки, даже для строк в кодировке UTF-8, хотя по умолчанию был в 'ISO-8859-1' В документации по новой линейке нет ни малейшего сообщения о несовместимости http://www.php.net/manual/ru/migration54.incompatible.php при работе данной функции. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
1nSane 1 Опубликовано: 21 мая 2012 Рассказать Опубликовано: 21 мая 2012 Автор Это хорошо, вы разбирайтесь Для меня главное, что проблему удалось найти и исправить, теперь надо отловить все упоминания этой функции во всех файлах, для перестраховки. А там либо РНР 5.4.х, либо ДЛЕ 9.7... уверен, кто-то да исправит Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 21 мая 2012 Рассказать Опубликовано: 21 мая 2012 celsoft Если входная строка string содержит неверную последовательность символов в указанной кодировке charset и флаг ENT_IGNORE (в PHP 5.4 ENT_SUBSTITUTE) не установлен, то htmlspecialchars() вернет пустую строку. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Elfiel 0 Опубликовано: 29 мая 2012 Рассказать Опубликовано: 29 мая 2012 (изменено) Не правильно поняли, данные функции не используются при показе новостей в админпанели скрипта. 1nSane, Давайте доступ по FTP и к админпанели скрипта, нужно визуально смотреть на вашем сервере, в какой функции у вас сбой. Спасибо, но я нашел причину, в файле /inc/editnews.php строка 185 (в DLE 9.6) $title = htmlspecialchars( stripslashes( $title ), ENT_QUOTES ); Вот ее комментирование возвращает русский язык, буду дальше копать Да, теперь нужно указывать кодировку: $title = htmlspecialchars( stripslashes( $title ), ENT_QUOTES, 'cp1251' );[/code] вот так тоже работает... буду смотреть где еще такие же куски кода... Еще в /classes/parse.php строка 506 (decodeBBcodes): [code]if (!$this->safe_mode AND $this->edit_mode) $txt = htmlspecialchars( $txt, ENT_QUOTES, 'cp1251' );[/code] Буду искать дальше... Ну или сразу использовать UTF-8, тогда не нужно вносить изменений с выходом 5.4 UTF-8 в htmlspecialchars теперь по умолчанию. Верно, только не[code] 'cp1251'[/code] , а[CODE] $config['charset'][/code] Изменено 29 мая 2012 пользователем Elfiel Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.