Пусто в логе. Страница полосатой ошибки тоже есс-но не возникает. Возможно надо будет включить детальное логирование в этот момент. На кнопку Объединить жмяк и ничего не происходит (клик как-будто вхолостую). В консоли при этом в реальном времени идет отсылка к 500 ошибке. Детали чуть позже гляну.
В неподдерживаемом приложении Контакты при склейке тоже не все гладко, но контакты склеиваются, хотя страница с результатом склейки глючит и показывает тупой дефолтный аватар как итог операции :). Но, понятно, что Контактами уже заниматься никто не станет и мне там бодаться самому. Однако там худо-бедно на php8 там хотя бы объединение получается.
Пока откатил на 7.2 т.к. мне работать с контактами надо.
Как появятся дублирующие контакты под склейку, то сделаю более полный тест. Сейчас их нет. Создавать специально дубли тоже не хочется. Обычно за 1-2 дня они появляются сами. Просто выбираю пару контактов в CRM и объединяю в один. Штатная операция. По уму проверить такое можно и на стенде, но у меня нет второго стенда с установкой Магазин + CRM в комплекте. Отказало объединение ровно после временного перевода "для проверки совместимости" на PHP 8.0.х и снова заработало, как только вернул на 7.2.х.
Поэтому и закинул пост на форум. Вдруг кто-то сталкивался уже с подобным?
Раздобыл некоторые данные для анализа. В код ещё не заглядывал сам. Пока вот из свежего лога на 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
Скорее всего в коде варнинги задавлены при помощи @. Но ...
Внимание
До PHP 8.0.0 оператор @ мог подавлять критические ошибки, которые прерывали выполнение скрипта. Например, добавление @ к вызову несуществующей функции, в случае, если она недоступна или написана неправильно, дальнейшая работа скрипта приведёт к прерыванию выполнения скрипта без каких-либо уведомлений.
Так же этот случай (объединение контактов) лишь частный. По идее на восьмерке будет ломаться все, что использует waLong
Если у темы появилась пометка "Принято", то стоит ли самому пробовать исправлять проблему (тратить время и силы, к тому же на 7.2.х работает и не напрягает) или проще дождаться обновления с более адаптированным под PHP 8 кодом?
В одном из ближайших обновлений фреймворка планируется исправить эту ошибку. В качестве временного решения в файле wa-system/controller/waLongActionController.class.php замените
@set_time_limit(287);
на
if (function_exists('set_time_limit')) {
@set_time_limit(287);
}
13 комментариев
Посмотрите в логе ошибок PHP, какие сообщения появляются при возникновении ошибки 500.
Пусто в логе. Страница полосатой ошибки тоже есс-но не возникает. Возможно надо будет включить детальное логирование в этот момент. На кнопку Объединить жмяк и ничего не происходит (клик как-будто вхолостую). В консоли при этом в реальном времени идет отсылка к 500 ошибке. Детали чуть позже гляну.
В неподдерживаемом приложении Контакты при склейке тоже не все гладко, но контакты склеиваются, хотя страница с результатом склейки глючит и показывает тупой дефолтный аватар как итог операции :). Но, понятно, что Контактами уже заниматься никто не станет и мне там бодаться самому. Однако там худо-бедно на php8 там хотя бы объединение получается.
Пока откатил на 7.2 т.к. мне работать с контактами надо.
Да, именно так нужно делать, когда возникает ошибка 500, чтобы выяснить подробности.
Как появятся дублирующие контакты под склейку, то сделаю более полный тест. Сейчас их нет. Создавать специально дубли тоже не хочется. Обычно за 1-2 дня они появляются сами. Просто выбираю пару контактов в CRM и объединяю в один. Штатная операция. По уму проверить такое можно и на стенде, но у меня нет второго стенда с установкой Магазин + CRM в комплекте. Отказало объединение ровно после временного перевода "для проверки совместимости" на PHP 8.0.х и снова заработало, как только вернул на 7.2.х.
Поэтому и закинул пост на форум. Вдруг кто-то сталкивался уже с подобным?
Раздобыл некоторые данные для анализа. В код ещё не заглядывал сам. Пока вот из свежего лога на 17:36 по Мск. Это пишется в лог при попытке объединить два контакта в один в CRM.
В консоли браузера выглядит так.
Тыц Думаю трабла в этом. Надо хостера подпнуть =)
Если коротко, то до пыхи 8 вызов отключенных функций сыпал варнинги. Начиная с 8 - падаем в фатал.
забыл добавить
Скорее всего в коде варнинги задавлены при помощи @. Но ...
Так же этот случай (объединение контактов) лишь частный. По идее на восьмерке будет ломаться все, что использует waLong
Спасибо за наводку. Сейчас в отъезде. В понедельник буду у компа и попробую вникнуть в детали.
Если у темы появилась пометка "Принято", то стоит ли самому пробовать исправлять проблему (тратить время и силы, к тому же на 7.2.х работает и не напрягает) или проще дождаться обновления с более адаптированным под PHP 8 кодом?
Думаю для решения конкретно этой проблемы, достаточно будет включить на хостинге (убрать из отключенных) функцию
В одном из ближайших обновлений фреймворка планируется исправить эту ошибку. В качестве временного решения в файле wa-system/controller/waLongActionController.class.php замените
на
В последней версии фреймворка Webasyst эта ошибка должна быть исправлена. Проверьте, пожалуйста. Сообщите, если проблема сохранилась.
Все норм. Ошибку исправили.