pdoTools и php 7.1
Перенёс сайты на новый VDS. На старом использовался PHP 7.0.11, а на новом установил PHP 7.1 RC3. И перестал работать pdoResources.В логе MODX ничего нет. Nginx пишет:
Stack trace:
#0 /home/admin/web/site.ru/public_html/core/cache/includes/elements/modsnippet/48.include.cache.php(37): pdoFetch->run()
#1 /home/admin/web/site.ru/public_html/core/model/modx/modscript.class.php(70): include('/home/admin/web...')
#2 /home/admin/web/site.ru/public_html/core/model/modx/modparser.class.php(521): modScript->process(Array)
#3 /home/admin/web/site.ru/public_html/core/components/pdotools/model/pdotools/pdoparser.class.php(271): modParser->processTag(Array, true)
#4 /home/admin/web/site.ru/public_html/core/model/modx/modparser.class.php(250): pdoParser->processTag(Array, true)
#5 /home/admin/web/site.ru/public_html/core/components/pdotools/model/pdotools/pdoparser.class.php(64): modParser->processElementTags('', '{$_modx->getChu...', true, false, '[[', ']]', Array, 9)
#6" while reading response header from upstream, client: 67.149.75.170, server: site.ru, request: "GET /tezd/page / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9003", host: "site.ru"
2016/10/21 15:49:16 [error] 7478#7478: *320052 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: [] operator not supported for strings in /home/admin/web/site.ru/public_html/core/components/pdotools/model/pdotools/pdofetch.class.php:155
Страницы, где нет вызовов pdoResources, показываются нормально. Подскажите, есть ли связь между версией PHP и ошибкой? Или надо копать что-то другое?Комментарии: 15
Да, это более строгая версия PHP, которая видит мои старые косяки =)
Добавь на строке 129 файла core/components/pdotools/model/pdotools/pdofetch.class.php
И смотри, будут ли еще ошибки.
Добавь на строке 129 файла core/components/pdotools/model/pdotools/pdofetch.class.php
$output = array();
И смотри, будут ли еще ошибки.
Спасибо, заработало! Постепенно насаждаемая типизация таки превратит php в подобие скучного c++. :(
Зато косяков и плохого кода будет меньше. pdoTools используется уже несколько лет и постепенно улучшается, но даже в нем существуют потенциальные ошибки, которые еще никто не нашел. Вот 71 и обнажила одну из проблем. Так что только за нововведения. Тем более что полностью строгий режим выключен по умолчанию.
Поддерживаю. Даже при наличии разных послаблений в 5 версии всегда старался и переменные заранее объявлять, и существование элементов массивов проверять, и т.д. Иногда это увеличивает код, хоть и незначительно, но точно делает его более читаемым, а в логах убирает предупреждения.
На одной из прошлы работ у нас было строгое правило при разработке всегда держать открытым в реальном времени лог приложения (tail -t) и проверка ошибок была настроена на отлов даже простых Notice. Notice — потенциальная ошибка и при наличии хоть одного код никогда бы не прошел код ревью. Несмотря на то, что на PHP можно написать откровенно дрянной код есть способы писать и по настоящему качественный промышленный код и более строгие режимы проверок только добавляют удобств.
Ставишь phpStorm и все потенциальные ошибки светятся. )
Обращение к несуществующему ключу массива — нет. И таких ошибок хватает, которые проявляют себя только рантайме.
Тестирование никто не отменял. А вот такой код светится
if ($a == 'a') {
$result = 'Output';
}
return $result;
После изменения типа переменной $output в pdofetch.class.php, появилась следующая ошибка:
418 строка и далее, указанного файла, выглядят так:
Не подскажете, в чем может быть проблема?
2017/11/24 14:53:21 [error] 28923#28923: *28045427 FastCGI sent in stderr: «PHP message: PHP Fatal error: Uncaught Error: Cannot use assign-op operators with string offsets in /home/s1825/www/core/cache/includes/elements/modsnippet/56.include.cache.php:418
418 строка и далее, указанного файла, выглядят так:
$output['filters'][$filter] .= $pdoFetch->getChunk($tpl, array(
'filter' => $method,
'table' => $table,
'rows' => $rows,
'has_active' => $has_active,
'delimeter' => $mSearch2->config['filter_delimeter'],
'filter_key' => $filter_key,
), $fastMode);
Не подскажете, в чем может быть проблема?
С PHP 7.3 pdoTools всё ещё не работает?
У меня та же проблема что у автора топика один в один.
Похоже прийдётся откатывать версию PHP…
У меня та же проблема что у автора топика один в один.
Похоже прийдётся откатывать версию PHP…
С PHP 7.3 pdoTools всё ещё не работает?
Прямо вот этот сайт прямо сейчас работает на PHP 7.3. Естественно, на pdoTools
Значит это мой код нужно подтягивать под стандарты…
Там видимо мои кастомные феномовские модификаторы нужно рефакторить чтобы не лезли феномовские ошибки.
Спасибо за ответ!
Там видимо мои кастомные феномовские модификаторы нужно рефакторить чтобы не лезли феномовские ошибки.
Спасибо за ответ!
Добрый день, на сайте постоянно пишутся ошибки типа:
[2017-06-13 12:36:17] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 04501439b157dd6a07bd7d54474679b4 line 88, near '{display:' < — there
[2017-06-13 12:36:18] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 24fa1a2d390c62190e4eb9ce2d220c83 line 88, near '{display:' < — there
[2017-06-13 12:36:18] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 24fa1a2d390c62190e4eb9ce2d220c83 line 88, near '{display:' < — there
[2017-06-13 12:36:18] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 90a373cfc9adada8cf32a233540388ac line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in bf19ac5ee111b03493d835497bd29f13 line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 680a74d8cb6a953ae6f8493163220c2c line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 680a74d8cb6a953ae6f8493163220c2c line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 28392d760efbe7b75f54e93ed3570705 line 88, near '{display:' < — there
[2017-06-13 12:36:29] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 7370ce3d514878616f6b93a387d79e35 line 99, near '{display:' < — there
[2017-06-13 12:36:30] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in fd35ef4665246317c048b45310f311f2 line 61, near '{display:' < — there
[2017-06-13 12:36:30] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in fd35ef4665246317c048b45310f311f2 line 61, near '{display:' < — there
в чем может быть проблема?
— установлена последняя версия pdotools
— php 5.6
[2017-06-13 12:36:17] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 04501439b157dd6a07bd7d54474679b4 line 88, near '{display:' < — there
[2017-06-13 12:36:18] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 24fa1a2d390c62190e4eb9ce2d220c83 line 88, near '{display:' < — there
[2017-06-13 12:36:18] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 24fa1a2d390c62190e4eb9ce2d220c83 line 88, near '{display:' < — there
[2017-06-13 12:36:18] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 90a373cfc9adada8cf32a233540388ac line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in bf19ac5ee111b03493d835497bd29f13 line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 680a74d8cb6a953ae6f8493163220c2c line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 680a74d8cb6a953ae6f8493163220c2c line 88, near '{display:' < — there
[2017-06-13 12:36:20] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 28392d760efbe7b75f54e93ed3570705 line 88, near '{display:' < — there
[2017-06-13 12:36:29] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in 7370ce3d514878616f6b93a387d79e35 line 99, near '{display:' < — there
[2017-06-13 12:36:30] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in fd35ef4665246317c048b45310f311f2 line 61, near '{display:' < — there
[2017-06-13 12:36:30] (ERROR @ /paas/c023/www/core/components/pdotools/model/pdotools/pdotools.class.php: 942) Unexpected tag 'display' in fd35ef4665246317c048b45310f311f2 line 61, near '{display:' < — there
в чем может быть проблема?
— установлена последняя версия pdotools
— php 5.6
Смотри js в контенте/шаблонах/чанках. Достаточно поставить пробел м/д { и продолжением в строках вида «{some_code». Часто «виноваты» конкретно счётчики метрики, addwords и т.п.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.