Отображение ошибок в PHP7 (Joomla)

Тема в разделе "PHP", создана пользователем d0ublezer0, 28 дек 2017.

Модераторы: latteo
  1. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    309
    Симпатии:
    169
    Не уверен, в тот ли раздел.
    При включенном отображении ошибок
    Код:
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    Joomla на PHP 7.0:
    [​IMG]

    переключаюсь PHP 5.6 и вижу нормальное объяснение, где ошибка:
    Код:
    Fatal error: Cannot use object of type stdClass as array in W:\home\gmt\.gmt\geo\geo.php on line 331
    правда в title страницы все равно текст из первого примера (0 - Cannot use object of type stdClass as array) но я хотя бы вижу на какой строке и в каком файле сбой.

    Как это исправить и получать имя файла и номер сбойной строки? Почему в 7.0 за меня решили, что мне не важно, где сломался код? Или это поведение Joomla?
     
  2. aurora2000

    aurora2000 Постоялец

    Регистр.:
    24 авг 2014
    Сообщения:
    122
    Симпатии:
    42
    Попробуйте поменять Error reporting в панели управления Joomla в Global Configuration -> Server. Установите режим Maximum. И тогда система сообщит все ошибки включая строки и тд
     
  3. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    309
    Симпатии:
    169
    Нет, это не так - указанная настройка переключает уровень выдачи ошибок E_ALL, E_WARNING и т.д.
    Но обработку вывода всё равно берет на себя движок.
    Мне одно не понятно - почему в 5.6 такого нет, а в 7.0 - есть?
     
  4. NickSan

    NickSan Постоялец

    Регистр.:
    23 авг 2012
    Сообщения:
    68
    Симпатии:
    39
    могу предположить что некоторые функции упразднили со времени появления php 5.6, возможно разработчики джумлы не все методы передели под новую версию php и ошибки выводятся так, как может это движок.
    https://stackoverflow.com/a/36269588/3153859
     
  5. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    309
    Симпатии:
    169
    в моём примере это обычное несовпадение типа: я обращаюсь к объекту как к массиву.
    дело в чём-то другом.
     
  6. NickSan

    NickSan Постоялец

    Регистр.:
    23 авг 2012
    Сообщения:
    68
    Симпатии:
    39
    Я имею ввиду может Джумла не умеет правильно выводить ошибки на php 7, может код движка не настолько универсален чтобы на 5.6 работать точно также как на php 7. Хотя ошибку то он вывел, только без подробностей...
     
  7. aurora2000

    aurora2000 Постоялец

    Регистр.:
    24 авг 2014
    Сообщения:
    122
    Симпатии:
    42
    d0ublezer0 нравится это.
  8. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    309
    Симпатии:
    169
  9. bettelli

    bettelli Создатель

    Регистр.:
    16 сен 2017
    Сообщения:
    28
    Симпатии:
    7
    int error_reporting ([ int $ level ])
    The error_reporting () function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script. If the optional level is not set, error_reporting () will just return the current error reporting level.
     
  10. Sandbird

    Sandbird Писатель

    Регистр.:
    21 фев 2018
    Сообщения:
    5
    Симпатии:
    2
    Can you post file geo\geo.php ?
    Its probably because the Class name is either a generic class name, or the class is initialized wrongly. Find where that class is called....ex: $blah = new Geo(); or something