Ошибка при обновлении с 2.0.1 до 2.0.2 через админскую панель.

При обновлении сайта до 2.0.2 сайт перестал запускаться.
Был на php 5.6.

Ошибка вела на ядро.
строка 1876 core/src/Core.php(1867): eval()'d code

там находится вот это
$return = eval($phpcode);


Временное решение до разбора проблемы — перейти на php 7 (я включил 7.3) и дописать:
$return = @eval($phpcode . "; return true;");


Что тут произошло при обновлении — надеюсь разъяснит Dmi3yy

ошибка парсера —

« Evolution CMS Parse Error »
Error : Use of undefined constant image - assumed 'image' (this will throw an Error in a future version of PHP)
Error information	
ErrorType[num]	WARNING[2]
File	/home/m/mysite/core/src/Core.php(1867) : eval()'d code
Line	3

Basic info	
REQUEST_URI	http://сайт.ru/
Resource	[1] Главная
Referer	
User Agent	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
IP	8.8.8.8
Current time	2020-03-16 15:17:27

Benchmarks	
MySQL	0,0000 s (0 Requests)
PHP	0,3525 s
Total	0,3525 s
Memory	3,6029281616211 mb

Backtrace
EvolutionCMS\Core->executeParser()
index.php on line 130
EvolutionCMS\Core->prepareResponse()
core/src/Core.php on line 2724
EvolutionCMS\Core->outputContent()
core/src/Core.php on line 2942
EvolutionCMS\Core->parseDocumentSource(string $var1)
core/src/Core.php on line 723
EvolutionCMS\Core->evalSnippets(string $var1)
core/src/Core.php on line 2654
EvolutionCMS\Core->_get_snip_result(string $var1)
core/src/Core.php on line 1943
EvolutionCMS\Core->evalSnippet(string $var1, array $var2)
core/src/Core.php on line 2032
eval()
core/src/Core.php on line 1867
require(string $var1)
core/src/Core.php(1867) : eval()'d code on line 1
DocLister->render()
assets/snippets/DocLister/snippet.DocLister.php on line 50
site_contentDocLister->_render('@CODE:[+output+]')
assets/snippets/DocLister/core/DocLister.abstract.php on line 622
extDocLister->init(site_contentDocLister $var1, array $var2)
assets/snippets/DocLister/core/controller/site_content.php on line 200
prepare_DL_Extender->run()
assets/snippets/DocLister/core/extDocLister.abstract.php on line 78
prepare_DL_Extender->callPrepare('mapsTpl', array $var2)
assets/snippets/DocLister/core/extender/prepare.extender.inc on line 52
EvolutionCMS\Core->runSnippet('mapsTpl', array $var2)
assets/snippets/DocLister/core/extender/prepare.extender.inc on line 98
EvolutionCMS\Core->evalSnippet(string $var1, array $var2)
core/src/Core.php on line 4414
eval()
core/src/Core.php on line 1867

3 комментария

avatar
Еще одна ошибка выскочила, связанная с переходом на 7.

Error : A non-numeric value encountered
File	/home/m/mysite/assets/snippets/DocLister/core/DocLister.abstract.php
Line	1516
Source	if ($limit < ($total - $limit)) {


Походу, если какая то переменная при выборке не определилась, то в 7.1 и выше это вызывает ошибку.
Лечение опять же временное — до разъяснения разработчика.
Ибо не хочется лезть в код каждый раз при обновлении.

объявить тип переменных принудительно (у меня заработало при объявлении не всех сразу, а хватило только для $limit).
if ($limit < ($total - (int)$limit)) {


Откуда это вообще могло появиться?
Ибо максимум что вызывается в документе, это 4 раза с разным ID родителя

[[DocLister?
&parents=`30`
&tpl=`excurs.mini.tpl`
&tplFirst=`excurs.big.tpl`
&display=`all`
&tvPrefix=``
&orderBy=`menuindex ASC`
&addWhereList=`c.template = 25`
&tvList=`image,date_place,age_ex,price_place,tags`
&prepare=`getTags1`
]] 		
avatar
По поводу последнего — решено — методом исключения нашел ошибку в коде запроса.
&prepare=`getTags1` — такого старым админом сайта не было сделано, на месте только getTags без цифры.
Как только убрал 1, все заработало.

З.Ы. Просто атас сколько багов приходится изыскивать и уничтожать. Куча дублирования, криво прописанные теги…

Но сниппет пришлось оставить в исправленном состоянии. Возможно где то еще неверный код вызова сниппета.

Осталось найти глюк по первому посту. Наверняка тоже где то в коде сниппетов допущена ошибка, которая валит сайт.
Комментарий отредактирован 2020-03-18 10:56:28 пользователем Yarri
avatar
Проблема в &display=`all`, `all` — это «A non-numeric value encountered»
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.