1С-Битрикс: Управление сайтомНа главную страницу
Клиентам
Маркетплейс
Партнерам
Разработчикам
Интеграция с 1С
Идея?


Личный кабинет
Авторизоваться
Регистрация
(войти) Корзина
Логин:

Пароль:



Забыли свой пароль?
Регистрация
Войти как пользователь:
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
ВКонтакте
Мой Мир
Twitter
Facebook
Google
Livejournal
Яндекс
Rambler
Mail.Ru
Liveinternet
Blogger
OpenID
Используйте вашу учетную запись VKontakte.ru для входа на сайт.
Используйте вашу учетную запись Мой Мир@Mail.ru для входа на сайт.
Используйте вашу учетную запись на Twitter.com для входа на сайт.
Используйте вашу учетную запись на Facebook.com для входа на сайт.
Используйте вашу учетную запись Google для входа на сайт.
.livejournal.com
@yandex.ru
@rambler.ru
@mail.ru
http://www.liveinternet.ru/users/ /
.blogspot.com
OpenID:
  • Документация
    • Платформа PHP
    • Корпоративный портал
    • Платформа ASP.NET
    • Отраслевые решения
    • Marketplace
    • Аренда приложений (SaaS)
  • Обучение и сертификация
    • Онлайн-курсы и сертификация
    • Учебные центры
    • Мое обучение
    • Учебные видеоролики
  • Центр поддержки
    • Поддержка
    • FAQ
    • Мои обращения
  • Сообщество
    • Блоги Битрикс
    • Блоги веб-разработчиков
    • Общие форумы
    • Веб-разработчики
      • Моя страница
      • Мои сообщения
      • Группы
      • Найти коллег
  • Cтатьи
    • Архив
Главная / Общение / Форумы / Общие форумы / Управление сайтом (Гостевой форум) / mbstring - проблемы для других сайтов в той же Апаче 2

mbstring - проблемы для других сайтов в той же Апаче 2

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Форумы » Общие форумы » Управление сайтом (Гостевой форум)
Страницы: 1
RSS
mbstring - проблемы для других сайтов в той же Апаче 2, mbstring.internal_encoding и mbstring.func_overload - распространяются в другие потоки Апачи
Алексей Руденко
Заглянувший
Сообщений: 4 Авторитет: 0 Рейтинг пользователя: 0 Регистрация: 12.11.2008
#1
0
11.03.2009 00:38:36
Проблема следующая. Устанавливал Битрикс в UTF-8, для чего честно прописал в конфиг Апачи:

php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2

Апача 2.2.3 из дистрибутива CentOS 5, PHP 5.1.6, все относительно "свежее". Наблюдаю проблему: неожиданно в других сайтах в PHP начинает сбоить функция strtolower, просто берет и глотает кириллицу. Пишу простенький скрипт:

error_reporting(E_ALL);
setlocale(LC_ALL, 'ru_RU.CP1251');
echo "<pre>############<br>\n";
$s="Петя Иванов 1";
echo $s;
echo "############<br>\n";
echo strtolower($s);
echo "##################<br>\n";
$locale_info = localeconv();
print_r($locale_info);
echo "##################</pre>";


Сижу, "дергаю" его браузером - раз в несколько загрузок strtolower съедает всю кириллицу!! Остальной вывод без изменений. Эффект нерегулярный, сбой где-то раз на 3-8 загрузок. Шаманство.

В мануале PHP натыкаюсь на заявление:

Warning
The locale information is maintained per process, not per thread. If you are running PHP on a multithreaded server api like IIS or Apache on Windows you may experience sudden changes of locale settings while a script is running although the script itself never called setlocale() itself. This happens due to other scripts running in different threads of the same process at the same time changing the processwide locale using setlocale().

Вот тут до меня доходит, что установка mbstring для одного сайта может запросто влиять на выполнение скриптов с другого сайта. Отключаю сайт с Битриксом - описанный эффект "глотания" кириллицы исчезает полностью. Включаю сайт с Битриксом - снова "шаманство". Причем не влияет, находятся директивы в конфиге сервера или .htaccess.

Вопрос: как-то это можно решить кроме запуска другого экземпляра Апачи на другом IP?

Тема на самом деле очень серьезная, потому что установка mbstring.func_overload может запросто порушить другие скрипты, например, тот же бэкап phpMyAdmin.
Изменено: Алексей Руденко - 11.03.2009 00:44:25
 
 
Михаил Дворников
Посетитель
Сообщений: 159 Авторитет: 3 Рейтинг пользователя: 4 Регистрация: 23.02.2008
#2
0
11.03.2009 05:09:24
После обновления движка у меня вылез текст кода наружу. Частично решил эту проблему, остались кое-где черные ромбики со знаком вопроса, отключив везде использование аякса. Может быть следующее обновление поможет искоренить это недоразумение с UTF-8?
 
 
Роман Петров
Эксперт
Сообщений: 1291 Авторитет: 23 Рейтинг пользователя: 380 Регистрация: 04.05.2007
#3
0
06.05.2009 17:16:27
Цитата
Алексей Руденко пишет:
Вопрос: как-то это можно решить кроме запуска другого экземпляра Апачи на другом IP?


прописываете в .htaccess для конкретного сайта и на другие сайты это не влияет.
ITConstruct. Разработка сайтов в Новосибирске. Внедрение корпоративных порталов. Техническая поддержка
 
 
Алексей Руденко
Заглянувший
Сообщений: 4 Авторитет: 0 Рейтинг пользователя: 0 Регистрация: 12.11.2008
#4
0
06.05.2009 17:35:56
Цитата
Роман Петров пишет:
[QUOTE]Алексей Руденко пишет:

Вопрос: как-то это можно решить кроме запуска другого экземпляра Апачи на другом IP?




прописываете в .htaccess для конкретного сайта и на другие сайты это не влияет.[/QUOTE]
smile:)))) Еще как влияет. Проверено. Касается Апача 2. Вы что, думаете, я стал бы задавать этот вопрос, если бы не было глюков?
 
 
Vadim Dumbravanu
Администратор
Сообщений: 1144 Авторитет: 123 Рейтинг пользователя: 288 Регистрация: 11.01.2003
#5
0
06.05.2009 18:19:33
Пока проблема не имеет решения, только использовать разные процессы Апача для utf и не utf версий. Более того, в последних версиях PHP (5.2.9?) отказались от установки опций mbstring.* в .htaccess, очевидно, не смогли справиться с проблемой и зарубили ее на корню. Теперь настраивать можно только на уровне php.ini.
 
 
Yury Tushinsky
Администратор
Сообщений: 344 Авторитет: 135 Рейтинг пользователя: 40 Регистрация: 09.01.2003
#6
0
06.05.2009 18:29:10
Попробуйте такой вариант конфигурации (и для PHP старше 5.2.8):

В php.ini установите:
mbstring.func_overload 2

для сайтов utf-8 в .htaccess установите:
php_value mbstring.internal_encoding UTF-8

для остальных:
php_value mbstring.internal_encoding Windows-1251
 
 
Алексей Руденко
Заглянувший
Сообщений: 4 Авторитет: 0 Рейтинг пользователя: 0 Регистрация: 12.11.2008
#7
0
06.05.2009 18:31:58
Цитата
Vadim Dumbravanu пишет:
Пока проблема не имеет решения, только использовать разные процессы Апача для utf и не utf версий. Более того, в последних версиях PHP (5.2.9?) отказались от установки опций mbstring.* в .htaccess, очевидно, не смогли справиться с проблемой и зарубили ее на корню. Теперь настраивать можно только на уровне php.ini.

О! Спасибо, Вадим! Вот теперь знаю ответ на вопрос. Пришел к тому же опытным путем. Только разные процессы, иначе - каша. Причем в Апаче 1.* таких граблей не наблюдал...

Что касается экспериментов с жестким указанием кодировок в .htaccess для каждого корневого каталога - увы, нет времени и сил на эксперименты, тем более и версия PHP у меня 5.1.6. Но на будущее учту, спасибо! Я как-то не догадался делать отдельный .htaccess для не-юникодных сайтов.
Изменено: Алексей Руденко - 06.05.2009 18:42:08
 
 
Роман Петров
Эксперт
Сообщений: 1291 Авторитет: 23 Рейтинг пользователя: 380 Регистрация: 04.05.2007
#8
0
06.05.2009 21:37:49
Цитата
Алексей Руденко пишет:
Еще как влияет.

Буквально сегодня пришлось основательно разобраться. Написал в блоге http://dev.1c-bitrix.ru/community/webdev/user/11573/blog/942/

Жесть какая-то: если php старый - то распространяется на другие процессы. Если новый - то не работает.
ITConstruct. Разработка сайтов в Новосибирске. Внедрение корпоративных порталов. Техническая поддержка
 
 
 
Страницы: 1
 
Технологии Эрмитаж
BitrixMobile
Автокеширование
SiteUpdate
Производительность Виртуальная машина
Веб-окружение
Результаты тестов
Выбрать хостинг
Веб-кластер
Безопасность Проактивная защита
Веб-антивирус
Аутентификация

Контакты Поиск Карта сайта
Телефон: +7 (495) 229-14-41
Оставайтесь с нами: Facebook Twitter Habrahabr VKontakte Developers Google 1+
Как распознать QR код?Контакты QR


© 2001-2012 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом.
Английская версия Немецкая версия