bitrix + phpmyadmin + mbstring.func_overload=0

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

Добрый день.
Подскажите пожалуйста как вы используете связку bitrix + phpmyadmin + mbstring.func_overload=0 ?
У меня есть пару сайтов на 1c-bitrix.
Иногда для корректировки базы mysql ножен phpmyadmin, при использовании phpmyadmin возникают ошибка.
Использую nginx+php-fpm.

Код: Выделить всё

PHP 7.4.8
nginx/1.18
phpmyadmin 4.9.5
Для phpmyadmin нужно mbstring.func_overload=0, а для битрикса нужен mbstring.func_overload=2.
Для работы битрикса в php.ini указываю mbstring.func_overload=2, а для работы phpmyadmin создаю отдельный сокет обработки php в php-fpm с параметром mbstring.func_overload=0.

Код: Выделить всё

[pma]
user = www
group = www
listen = /tmp/pma.sock
listen.owner = www
listen.group = www
pm = dynamic
pm.max_children = 105
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 11
pm.max_requests = 1000
security.limit_extensions = .php .php3 .php4 .php5
php_admin_value[mbstring.func_overload] = 0
Получается два сокета.
1 /tmp/www.sock - для всех сайтов.
2 /tmp/pma.sock - для phpmyadmin.
При такой связке phpmyadmnin не корректно работает, получается войти в phpmyhadmin но сделать ничего нельзя, появляется ошибка, просто даже зайти в таблицу.

Код: Выделить всё

2020/08/21 12:22:15 [error] 18866#100603: *7 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Twig\Error\SyntaxError: Unexpected "lse" tag (expecting closing tag for the "if" tag defined near line 5). in /usr/local/www/phpMyAdmin/templates/display/results/comment_for_row.twig:6
Stack trace:
#0 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/TokenParser/IfTokenParser.php(41): Twig\Parser->subparse()
#1 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/Parser.php(209): Twig\TokenParser\IfTokenParser->parse()
#2 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/TokenParser/IfTokenParser.php(41): Twig\Parser->subparse()
#3 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/Parser.php(209): Twig\TokenParser\IfTokenParser->parse()
#4 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/Parser.php(122): Twig\Parser->subparse()
#5 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/Environment.php(735): Twig\Parser->parse()
#6 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/Environment.php(793): Twig\Environment->parse()
#7 /usr/local/www/phpMyAdmin/vendor/twig/twig/src/Environmen" while reading response header from upstream, client: 1.2.3.1, server: local.local, request: "GET /pma1/sql.php?db=rw_new&table=b_catalog_currency_lang&pos=0&ajax_request=true&ajax_page_request=true&_nocache=1598001881989889313&token=5f7d76312760785d2136732269357660 HTTP/2.0", upstream: "fastcgi://unix:/tmp/pma.sock:", host: "local.local"
Изображение

Если указать в php.ini mbstring.func_overload=0 то phpmyadmin работает хорошо.
Как быть в таком случае?
Иногда мне нужно зайти в базу и отредактировать таблици и т.д. в консоле сервера делать это не удобно.
Также пробовал указывать в локейшене phpmyadmin в nginx.

Код: Выделить всё

fastcgi_param PHP_VALUE "mbstring.func_overload = 0";
Не помогает.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

Процессы php-fpm?
Такое чувство что у вас обработка php для обоих сокетов идёт в одном процессе.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
23.08.2020 09:57
Процессы php-fpm?
Такое чувство что у вас обработка php для обоих сокетов идёт в одном процессе.
Нет, для сайт свой сокет, для пма свой.
1 /tmp/www.sock - для всех сайтов.
2 /tmp/pma.sock - для phpmyadmin.
Как вариант, либо перейти на админнер для редактирования баз, либо переместить параметры для битрикса в сокет и глобально сделать в php.ini по умолчанию параметры (mbstring.func_overload=0).
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

Позже гляну у себя, получится ли повторить такое.
Но тут и так видно, что для каждого пула, где прописывается сокет нужны свои настройки.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
23.08.2020 16:35
Позже гляну у себя, получится ли повторить такое.
Но тут и так видно, что для каждого пула, где прописывается сокет нужны свои настройки.
1 /tmp/www.sock - для всех сайтов - тянет настройки из php.ini.
2 /tmp/pma.sock - для phpmyadmin - часть настроек php.ini указано в пуле php-fpm.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

Попробовал, не получилось, может по тому, что у меня для сайта прописан http, а для phpmyadmin прописано на https. Если в php.ini прописано mbstring.func_overload = 2, то phpmyadmin вообще не запускется, при этом если в пуле прописать:

Код: Выделить всё

php_value[mbstring.func_overload] = 0
; либо
; php_admin_value[mbstring.func_overload] = 0
То все запускается и БД редактируется.
Как вариант, можно закомментировать в php.ini строчку mbstring.func_overload = 2.
А для пула www прописать то самое в php_value.
Добавлено (18:58):
Удалось получить ошибку, это особенность поведения php-7.4.
Т.е. глобальную переменную mbstring.func_overload в php.ini закомментировать и уже для www прописывать в пуле в php_value.
На php-7.2 такой ошибки не возникает.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
23.08.2020 18:00
Удалось получить ошибку, это особенность поведения php-7.4.
Т.е. глобальную переменную mbstring.func_overload в php.ini закомментировать и уже для www прописывать в пуле в php_value.
На php-7.2 такой ошибки не возникает.
Я не давно с такой ошибкой столкнулся, как один из проектов перевел на php 7.4.
Наверно так и сделаю, глобально укажу mbstring.func_overload = 0, а индивидуально специально для сайта битрикс в пуле php mbstring.func_overload = 2
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
23.08.2020 18:00
Попробовал, не получилось, может по тому, что у меня для сайта прописан http, а для phpmyadmin прописано на https. Если в php.ini прописано mbstring.func_overload = 2, то phpmyadmin вообще не запускется, при этом если в пуле прописать:

Код: Выделить всё

php_value[mbstring.func_overload] = 0
; либо
; php_admin_value[mbstring.func_overload] = 0
То все запускается и БД редактируется.
Как вариант, можно закомментировать в php.ini строчку mbstring.func_overload = 2.
А для пула www прописать то самое в php_value.
Добавлено (23.08.2020 18:58):
Удалось получить ошибку, это особенность поведения php-7.4.
Т.е. глобальную переменную mbstring.func_overload в php.ini закомментировать и уже для www прописывать в пуле в php_value.
На php-7.2 такой ошибки не возникает.
Вообщем какойто баг в работе fpm.

Код: Выделить всё

php_admin_value[mbstring.func_overload] = 2
php_admin_value[mbstring.internal_encoding] = utf-8
Не работают эти параметры в сокете fpm.
Только если глобально переменные в php.ini есть, тогда работает.
Можно забыть пока о связке битрикс+php7.4+пма
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

bars писал:
24.08.2020 11:54
Не работают эти параметры в сокете fpm.
Да как бы должны работать, если только глобально нет объявления в php.ini.
Закомментировать пробовали в php.ini, а потом уже прописывать в пуле. Ну и вроде как переопределять должно если задать в php_value. Просто эти переменные не должны быть объявлены глобально, видно в php 7.4 глобальные не переопределяются в пуле, либо переопределяются, но как то криво.
Можно попробовать написать в багзилу, может ответят чего стоящего.
Для каждого пула создаётся свой процесс php, он наследует переменные окружения от родителя(настройки php.ini), и видно переопределяет их не очень то хорошо.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 12:10
Можно попробовать написать в багзилу, может ответят чего стоящего.
Не нашел для php.
Добавлено (12:53):
Написал письмо сюда.
General bugs <php-bugs@lists.php.net>
General bug activity are posted here.
Жду ответа, некогда не приходилось писать на Mailing Lists.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

Вроде есть https://bugs.php.net
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 12:59
Вроде есть https://bugs.php.net
Нет функции зарегистрироваться.
как логин получить хз.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

bars писал:
24.08.2020 13:17
Нет функции зарегистрироваться.
как логин получить хз.
Не оно ? тыц.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 13:23
Не оно ? тыц.
Спасибо уже разобрался.
Создал тикет.
https://bugs.php.net/bug.php?id=80012
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
23.08.2020 18:00
Удалось получить ошибку, это особенность поведения php-7.4.
Т.е. глобальную переменную mbstring.func_overload в php.ini закомментировать и уже для www прописывать в пуле в php_value.
На php-7.2 такой ошибки не возникает.
Попробовал на проекте с php73 те же яйца.
Вообщем придется пока пользоваться adminer вместо phpmyadmin.
Багзила у php не шибка быстрая, смотрю некоторые баги месяцами обрабатываются.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

Хм, ну а использовать глобальные переменные mbstring.func_overload принципиально?
Почему нельзя использовать свои настройки для каждого пула, т.е. использовать два пула. Я конечно не знаю что там за настройки, что обязательно прописывать в php.ini.
Пример:

Код: Выделить всё

[Название пула]
listen = /tmp/name.sock
; Настройки ....
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 16:39
Хм, ну а использовать глобальные переменные mbstring.func_overload принципиально?
Почему нельзя использовать свои настройки для каждого пула, т.е. использовать два пула. Я конечно не знаю что там за настройки, что обязательно прописывать в php.ini.
Пример:

Код: Выделить всё

[Название пула]
listen = /tmp/name.sock
; Настройки ....
Я же писал выше, использовал два фпм пула.

Код: Выделить всё

1 /tmp/www.sock
2 /tmp/pma.sock
Пробовал эти параметры делать в php.ini по стандарту.
mbstring.func_overload = 0
mbstring.internal_encoding =

А в сокете фпм для сайта указывал уже

Код: Выделить всё

[www]
listen = /tmp/www.sock
...
php_admin_value[mbstring.func_overload] = 2
php_admin_value[mbstring.internal_encoding] = utf-8
...
И отдельный сокет для пма.
[pma]
listen = /tmp/pma.sock
В таком порядке не корректно работает сайт, пма работает нормально.
Сайт ругается на mbstring.func.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

bars писал:
24.08.2020 16:47
Пробовал эти параметры делать в php.ini по стандарту.
mbstring.func_overload = 0
mbstring.internal_encoding =
Ну так я и говорю, что надо эти строчки либо удалить из php.ini, либо поставить перед ними точку с запятой ;
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 16:52
bars писал:
24.08.2020 16:47
Пробовал эти параметры делать в php.ini по стандарту.
mbstring.func_overload = 0
mbstring.internal_encoding =
Ну так я и говорю, что надо эти строчки либо удалить из php.ini, либо поставить перед ними точку с запятой ;
Я пробовал по умолчанию параметры в php.ini использовать, только в сокете -fpm указывать.
толку ноль.
Вот что ответили в phpmyadmin.
https://github.com/phpmyadmin/phpmyadmin/issues/16313
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

Ну тогда писать создателям bitrix, что на новом php эта функция устарела и что оно скоро не будет работать как надо.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 18:51
Ну тогда писать создателям bitrix, что на новом php эта функция устарела и что оно скоро не будет работать как надо.
Уже написано.
https://dev.1c-bitrix.ru/community/forums/forum6/topic134056/
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

bars писал:
24.08.2020 19:09
Уже написано.
https://dev.1c-bitrix.ru/community/forums/forum6/topic134056/
Немного не правильно написано, надо было указать, что функция mbstring.func_overload для phpmyadmin, вообще не нужна, так как 0 отключает. А вот для bitrix она необходима с параметром 2, а следовательно это им нужно суетится, и исправить.
У меня phpmyadmin без объявления этой функции с параметром 0 работает нормально, так как она вообще не объявлена.
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 1022
ОС: BSD/LINUX

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение bars »

ormorph писал(а):
24.08.2020 19:20
bars писал:
24.08.2020 19:09
Уже написано.
https://dev.1c-bitrix.ru/community/forums/forum6/topic134056/
Немного не правильно написано, надо было указать, что функция mbstring.func_overload для phpmyadmin, вообще не нужна, так как 0 отключает. А вот для bitrix она необходима с параметром 2, а следовательно это им нужно суетится, и исправить.
У меня phpmyadmin без объявления этой функции с параметром 0 работает нормально, так как она вообще не объявлена.
У меня на остальных проектах где mbstring.func_overload = 0 пма работает нормально, только на серверах где битрикс не работает.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3124
ОС: Gentoo

Re: bitrix + phpmyadmin + mbstring.func_overload=0

Сообщение ormorph »

bars писал:
24.08.2020 19:33
только на серверах где битрикс не работает.
Ну я про то и говорю, что их нужно ткнуть носом, что так как этот функционал устарел, то он скоро буде вообще удалён и работать даже хоть как то не будет, по этому им нужно избавляться от этой проблемы, так как клиентов у них может поубавится.
Спасибо сказали: