Помогите!! Пожалуйста! (mbstring, поиск, вопросики вместо буковок)
Прикрутил mbstring к php, прочитал на этом сайте про mbstring, не понял, как править файлы где надо проверки делать.. и надо ли их править в последнем CVS?
Тем не менее, регистронезависимый поиск на русском заработал, но теперь вместо русских буковок, например "с" рисует вопросики, например, даже в site slogan'е. Как это зафиксить? Drupal - последний из CVS, MySQL 4.1.5, PHP 4.3.8..
- 's blog
- Для комментирования войдите или зарегистрируйтесь
в вопросики превращаются 6 русских букв: А, Ё, Н, с, э, я.
А также в логи периодически пишется
warning: mb_strrpos(): Empty haystack in ... on line ...
ну да это, как я понимаю, из-за постых аргументов mbstring.
- Для комментирования войдите или зарегистрируйтесь
Сегодня прикручу, посмотрю.
Для начала, если mbstring добавлен не на новую установку Drupal, надо очистить старую таблицу поиска.
Для этого: обнулить таблицу search_index и удалить в таблице variable переменные comment_cron_last и node_cron_last (они потом заново создадутся), а потом запустить cron.php.
DELETE FROM `search_index`; DELETE FROM `variable` WHERE `name` = 'comment_cron_last' LIMIT 1; DELETE FROM `variable` WHERE `name` = 'node_cron_last' LIMIT 1;
Эту операцию стоит производить при каждом изменении настроек во время экспериментов.
И главное - на какие модули и строки ругается? Это было всего в 2-3 местах. Если mb_strrpos() не отрабатывает, то, естественно, будут ошибки.
Какая локаль? Есть ли что про mb_ в конфигах сервера? Какие строки точно добавлены в .htaccess?
- Для комментирования войдите или зарегистрируйтесь
Пересоздал базу заново, благо там не было ничего почти, и всё стало нормально с буквами, по крайней мере. А вот ошибки в лог всё равно пишет:
warning: mb_strrpos(): Empty haystack in /var/www/drupal/includes/menu.inc on line 900.
и
warning: mb_ereg(): mbregex compile err: invalid regular expression in /var/www/drupal/modules/user.module on line 187.
Что можно предпринять?
По поводу локали - какая имеется в виду? Если mysql и drupal, то UTF-8, системная у сервера "C". Про mb_ в конфигах написал ровно то, что нашёл на этом сайте, а именно:
php_value output_buffering On
php_value output_handler mb_output_handler
php_value default_charset UTF-8
php_value mbstring.language Russian
php_value mbstring.http_input auto
php_value mbstring.http_output UTF-8
php_value mbstring.internal_encoding UTF-8
php_value mbstring.substitute_character none
php_value mbstring.func_overload 6
- Для комментирования войдите или зарегистрируйтесь
menu.inc
904c904,906 < $parent = substr($parent, 0, strrpos($parent, '/')); --- > if ($parent) $_lenght = strrpos($parent, "/"); > $parent = substr($parent, 0, $_lenght); > // $parent = substr($parent, 0, strrpos($parent, '/'));
А вот с user.module я пока не понял. На первый взгляд, в строке 187 проверяются коды, среди которых могут оказаться и русские символы. Проще пока закомментировать эту строку, т.к. это просто проверка на неверные символы в имени пользователя, а потом уже разбираться.
PS: Обнаружил, что у меня после какого-то очередного апдейта пропала поддержка mbstring в системе, ставить-разбираться влом, ибо пятница, ночь, преферанс... :). Надо - разберемся.
- Для комментирования войдите или зарегистрируйтесь

Комментарии