Проблема следующая. Устанавливал Битрикс в 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.
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.