CRM: объединение контактов, ошибка 500, php 8.0.12 Исправлено

1

Прошу подтвердить или опровергнуть ошибку при склейке (объединении) контактов в CRM последней версии c PHP 8.0.x.

В той же самой конфигурации, но с PHP 7.2.x проблем нет. Все работает как часы.

13 комментариев

  • +1
    Rat Rat Партнер-разработчик 7 февраля 2022 07:55 #

    Посмотрите в логе ошибок PHP, какие сообщения появляются при возникновении ошибки 500.

    • +1
      replicant replicant 7 февраля 2022 12:41 #

      Пусто в логе. Страница полосатой ошибки тоже есс-но не возникает. Возможно надо будет включить детальное логирование в этот момент. На кнопку Объединить жмяк и ничего не происходит (клик как-будто вхолостую). В консоли при этом в реальном времени идет отсылка к 500 ошибке. Детали чуть позже гляну.

      В неподдерживаемом приложении Контакты при склейке тоже не все гладко, но контакты склеиваются, хотя страница с результатом склейки глючит и показывает тупой дефолтный аватар как итог операции :). Но, понятно, что Контактами уже заниматься никто не станет и мне там бодаться самому. Однако там худо-бедно на php8 там хотя бы объединение получается.

      Пока откатил на 7.2 т.к. мне работать с контактами надо.

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 7 февраля 2022 15:08 #

        Возможно надо будет включить детальное логирование в этот момент.

        Да, именно так нужно делать, когда возникает ошибка 500, чтобы выяснить подробности.

        • +1
          replicant replicant 7 февраля 2022 16:04 #

          Как появятся дублирующие контакты под склейку, то сделаю более полный тест. Сейчас их нет. Создавать специально дубли тоже не хочется. Обычно за 1-2 дня они появляются сами. Просто выбираю пару контактов в CRM и объединяю в один. Штатная операция. По уму проверить такое можно и на стенде, но у меня нет второго стенда с установкой Магазин + CRM в комплекте. Отказало объединение ровно после временного перевода "для проверки совместимости" на PHP 8.0.х и снова заработало, как только вернул на 7.2.х.

          Поэтому и закинул пост на форум. Вдруг кто-то сталкивался уже с подобным?

        • +1
          replicant replicant 9 февраля 2022 17:51 #

          Раздобыл некоторые данные для анализа. В код ещё не заглядывал сам. Пока вот из свежего лога на 17:36 по Мск. Это пишется в лог при попытке объединить два контакта в один в CRM.

          [09-Feb-2022 17:36:00 Europe/Moscow] PHP Fatal error:  Uncaught Error: Call to undefined function set_time_limit() in /....../wa-system/controller/waLongActionController.class.php:898
          Stack trace:
          #0 /....../wa-system/controller/waLongActionController.class.php(258): waLongActionController->initEnv()
          #1 /....../wa-system/controller/waController.class.php(21): waLongActionController->execute()
          #2 /....../wa-system/controller/waFrontController.class.php(263): waController->run()
          #3 /....../wa-apps/crm/lib/classes/crmFrontController.class.php(49): waFrontController->runController()
          #4 /....../wa-system/controller/waFrontController.class.php(190): crmFrontController->runController()
          #5 /....../wa-system/controller/waFrontController.class.php(84): waFrontController->execute()
          #6 /....../wa-apps/crm/lib/classes/crmFrontController.class.php(29): waFrontController->dispatch()
          #7 /....../wa-system/controller/waDispatch.class.php(162): crmFrontController->dispatch()
          #8 /....../wa-system/controller/waDispatch.class.php(32): waDispatch->dispatchBackend()
          #9 /....../wa-system/waSystem.class.php(610): waDispatch->dispatch()
          #10 /....../index.php(7): waSystem->dispatch()
          #11 {main}
            thrown in /....../wa-system/controller/waLongActionController.class.php on line 898

          В консоли браузера выглядит так.

          • +1

            Тыц Думаю трабла в этом. Надо хостера подпнуть =)

            Если коротко, то до пыхи 8 вызов отключенных функций сыпал варнинги. Начиная с 8 - падаем в фатал.

            • +1

              забыл добавить

              Скорее всего в коде варнинги задавлены при помощи @. Но ...

              Внимание До PHP 8.0.0 оператор @ мог подавлять критические ошибки, которые прерывали выполнение скрипта. Например, добавление @ к вызову несуществующей функции, в случае, если она недоступна или написана неправильно, дальнейшая работа скрипта приведёт к прерыванию выполнения скрипта без каких-либо уведомлений.

              Так же этот случай (объединение контактов) лишь частный. По идее на восьмерке будет ломаться все, что использует waLong

              • +1
                replicant replicant 10 февраля 2022 07:43 #

                Спасибо за наводку. Сейчас в отъезде. В понедельник буду у компа и попробую вникнуть в детали.

              • +1
                replicant replicant 13 февраля 2022 13:36 #

                Если у темы появилась пометка "Принято", то стоит ли самому пробовать исправлять проблему (тратить время и силы, к тому же на 7.2.х работает и не напрягает) или проще дождаться обновления с более адаптированным под PHP 8 кодом?

                • +2

                  Думаю для решения конкретно этой проблемы, достаточно будет включить на хостинге (убрать из отключенных) функцию

                  set_time_limit
                • +1
                  Михаил Ушенин Михаил Ушенин Webasyst 14 февраля 2022 09:14 #

                  В одном из ближайших обновлений фреймворка планируется исправить эту ошибку. В качестве временного решения в файле wa-system/controller/waLongActionController.class.php замените

                  @set_time_limit(287);

                  на

                  if (function_exists('set_time_limit')) {
                      @set_time_limit(287);
                  }

                • +1
                  Михаил Ушенин Михаил Ушенин Webasyst 11 апреля 2022 11:59 #

                  В последней версии фреймворка Webasyst эта ошибка должна быть исправлена. Проверьте, пожалуйста. Сообщите, если проблема сохранилась.

                  Добавить комментарий

                  Чтобы добавить комментарий, зарегистрируйтесь или войдите