Обнаружена ошибка 0 call to a member function format on null

Joomla 3 Решено, решения и обсуждения
Подробности
Joomla 3 Решение проблем

07 марта 2020

5354

В административной части версий ☑Joomla 3.7 ☑Joomla 3.8 появляется Ошибка «Call to a member function format() on null»  in … /plugins/quickicon/phpversioncheck/phpversioncheck.php on line 174

Решаем новую проблему Джумлы:error     Call to a member function format() on null

Причина возникновения этой проблемы, как это ни странно, ⇒ «мина замедленного действия», заложенная разработчиками самой Джумлы.

Они заложили в программе ограничения по времени в работе Joomla в зависимости от в версии движка в файле phpversioncheck.php.
Открываем его и смотрим ➡

Решение

1 Ищем папку /plugins/quickicon/phpversioncheck/
Открываем файл phpversioncheck.php .

правим файл

!

Что делать?

➡ правим даты в phpversioncheck.php на 10 лет
результат правок виден на скриншоте в шапке этого поста.

Решение

2 Повышаем версию PHP до 7.2
Как ? ➡
Или трясём вашего хостера или самостоятельно, если у вас есть доступ.

Решение

3 Обновляем саму Joomla

Только не забудьте сначала сделать Backup на всякий случай.

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

О нашем проекте

Проект Joom-la-la предназначен для начинающих пользователей Системы управления сайтами Joomla; программистов, администраторов. Мы хотим поделиться с вами своими наработками и примерами.

Это один из сотен сайтов, сделанных нами в рамках бренда Petrovich Group. Надеемся быть вам полезными и ждём ваших комментариев

Петрович

Контактная информация

Владивосток, Россия

+ 7 423 2 *** ***

888 (@) jom-la-la.ru

petrovichgroup.ru

****

Новые публикации

Обнаружена ошибка. U…

При попытке сохранить файл configuration появляется сообщение: 0 — Обнаружена ошибка. Unable to load…

После обновления до…

После обновления Joomla до 3.6 в разделе Менеджер расширений — установить появляется  Предупреж…

Серия Fatal ошибок в…

В достаточно хороших шаблонах Vina Bonnie, Vina Fashion, IncomeUp, Vina Bagshop есть проблема — они…

[Решено] Ошибка при…

Иногда, при сохранении различного контента ( материала, портфолио), в админке,  возникает ошибк…

© Joom-la-la.ru . При любом использовании материалов ссылка на Joom-la-la.ru обязательна.
Все права защищены.

0 Пользователей и 1 Гость просматривают эту тему.

  • 29 Ответов
  • 21981 Просмотров

Всех приветствую.
Сегодня в админке трех разных сайтов (на Joomla 3.8.2.), но сделанных из одного шаблона (стандартный Protostar) появилась ошибка «Call to a member function format() on null».
Ошибка возникает при входе в админку и при попытке войти в Панель управления админки. В любые другие разделы админки захожу без проблем.
Никакие работы на сайте не проводились. Все три сайта на одном хостинге, но между собой не связаны. Сами сайты работают хорошо.
Может кто-то сталкивался с подобной проблемой? Или есть идеи на сей счет?

Может хостер версию PHP повысил.

По факту включите отображение ошибок

Может хостер версию PHP повысил.

Уточнил, не повысил.

Проблема решена!
Изменил версию php и проблема ушла.
Всем спасибо за участие!

Проблема решена!
Изменил версию php и проблема ушла.
Всем спасибо за участие!

Но обновится все же вам совет

Но обновится все же вам совет

Такое мнение тоже имеется, но есть допилы движка, которые после обновления слетят.

Такое мнение тоже имеется, но есть допилы движка, которые после обновления слетят.

Ну иначе могут поломать
А доработки движка тоже дело хитрое

Здравствуйте, такая же проблема вылезла, подскажите на какую версию PHP вы поменяли чтобы всё заработало?

Такая же фигня, но причину я знаю. У меня стояла версия PHP 7.0.11 и при заходе в админку постоянно светилось сообщение что с 01.12.2019 эта версия перестанет поддерживаться. Я думал это просто предупреждение на свой страх и риск, а оказывается в Joomla где-то заложено что с 01.12.2019 на этих версиях PHP убить твой сайт, а если включить версию 5.6 то админка Joomla умрёт полностью:)
Предполагаю что будет работать корректно на версии от 7.1 и выше.

Такая же фигня, но причину я знаю. У меня стояла версия PHP 7.0.11 и при заходе в админку постоянно светилось сообщение что с 01.12.2019 эта версия перестанет поддерживаться. Я думал это просто предупреждение на свой страх и риск, а оказывается в Joomla где-то заложено что с 01.12.2019 на этих версиях PHP убить твой сайт, а если включить версию 5.6 то админка Joomla умрёт полностью:)
Предполагаю что будет работать корректно на версии от 7.1 и выше.

Что за бред?
Все на 5.6 прекрасно работает, так же как и на 7.1,7.2,7.3

у меня админка легла именно 01.12.2019
версия Joomla 3.7.5
На другом сайте с версией Joomla 3.9.11 с версией PHP 7.0.11 работает, но есть предупреждение.
Ошибка
Мы обнаружили, что ваш сервер использует версию PHP 7.0.11, которая является устаревшей и не получает официальные обновления от разработчиков. Проект Joomla рекомендует обновить ваш сайт до версии PHP 7.2 или более поздней версии, которые будут получать обновления для системы безопасности по крайней мере до 30.11.20. Пожалуйста, попросите вашего хостинг-провайдера, чтобы он сделал PHP 7.2 или более позднюю версию по умолчанию для вашего сайта. Если ваш хост уже готов к PHP 7.2 включите PHP 7.2 для корня вашего сайта и панели администрирования – как правило, вы можете сделать это самостоятельно через инструмент в вашей панели управления хостингом, но лучше всего спросить вашего хостинг-провайдера, если вы не уверены.

Хотя странно конечно, проверил сейчас более старый сайт работает на Joomla 3.4.8 и PHP 5.3.28. И всё тут норм с админкой.
Неужели хостеры у меня что-то натворили.
Что на версии 3.7.5 и PHP 7.0.11 админка умерла.

Уведомление то висит, но все работает
На 7.0.32 так же

Уведомление то висит, но все работает
На 7.0.32 так же

Человек создал пост что у него в админке ошибка появилась 01.12.2019 как и у меня. Чтобы это могло быть?

Человек создал пост что у него в админке ошибка появилась 01.12.2019 как и у меня. Чтобы это могло быть?

Тут сдожно сказать, но к оповещению отношения точно не имеет, да и в нем про 20 год

Тут сдожно сказать, но к оповещению отношения точно не имеет, да и в нем про 20 год

Это на новой версии про 20 год, а в 3.7.5 было оповещение что 01.12.2019 прекратится поддержка этой версии PHP

Может проблема именно в 7.0.1
Нет возможности проверить.
Минимальная семерка у хоста 0.32

Может проблема именно в 7.0.1
Нет возможности проверить.
Минимальная семерка у хоста 0.32

Версия 7.0.11 а не 7.0.1 и возможности к сожалению нет, так как это единственная версия у моих.

Если сайт переключить на версию PHP 5.6 то появляется вот такое:
Fatal error: Call to a member function format() on null in /home/c10636/public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 174

Если сайт переключить на версию PHP 5.6 то появляется вот такое:
Fatal error: Call to a member function format() on null in /home/c10636/public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 174

Ругается на плагин что ввводит предупреждение о версии PHP

Вот что я нашёл в этом плагине, видимо я был прав насчёт того что Joomla проверяет такую фигню.

	private function getPhpSupport()
{
$phpSupportData = array(
'5.3' => array(
'security' => '2013-07-11',
'eos'      => '2014-08-14',
),
'5.4' => array(
'security' => '2014-09-14',
'eos'      => '2015-09-14',
),
'5.5' => array(
'security' => '2015-07-10',
'eos'      => '2016-07-21'
),
'5.6' => array(
'security' => '2016-12-31',
'eos'      => '2018-12-31'
),
'7.0' => array(
'security' => '2017-12-03',
'eos'      => '2018-12-03'
),
'7.1' => array(
'security' => '2018-12-01',
'eos'      => '2019-12-01'
),
);

Вот что я нашёл в этом плагине, видимо я был прав насчёт того что Joomla проверяет такую фигню.

	private function getPhpSupport()
{
$phpSupportData = array(
'5.3' => array(
'security' => '2013-07-11',
'eos'      => '2014-08-14',
),
'5.4' => array(
'security' => '2014-09-14',
'eos'      => '2015-09-14',
),
'5.5' => array(
'security' => '2015-07-10',
'eos'      => '2016-07-21'
),
'5.6' => array(
'security' => '2016-12-31',
'eos'      => '2018-12-31'
),
'7.0' => array(
'security' => '2017-12-03',
'eos'      => '2018-12-03'
),
'7.1' => array(
'security' => '2018-12-01',
'eos'      => '2019-12-01'
),
);

Это просто даты вывода оповещений.
Он уперся вкрай и дает ошибку.
А в чем причина?
Обновлять Joomla надо вовремя)))
По факту ничего страшного

В общем можно или изменить дату для своей версии PHP в этом файле или зайти в плагины и забить в поиск там «Панель иконок»(элемент phpversioncheck) и выключить его.
И будем вам счастье.

Именно так
Или обновить джумла. Чтотправильнее

Благодарю всех. проблема решилась сменой версии PHP на 7.1.30. После чего сразу обновил Joomla. Версия изначально была 3.8. обновил до 3.9

Проблема точно в PHP
Обновлял последовательно на 7.1, 7.2 и только на 7.3 сайт завёлся.
Главное не терять надежды ))

Плюсую в пользу решения об обновлении. php 7.1.28, вырубилась админка Joomla 3.8. Спасло обновление до свежей 3.9.24.

Вообще, это очень странно, когда когда без изменения версии php и без изменения программного кода что-то в какой-то момент падает. Значит что-то где-то нюхает и сверяется с датой.

Некоторые их наших пользователей столкнулись с ошибкой «joomla Call to a member function format() on null». При этом, ни на хостинге, ни на проблемном сайте не вносилось никаких изменений. Мы решили разобраться откуда она берётся и поделиться способами решения проблемы.

Самым нетерпеливым можно сразу перейти к разделу как исправить ошибку. Если же Вам интересно разобраться в причинах, читаем всю статью полностью ).

Корень ошибки кроется в файле phpversioncheck.php, который расположен в папке /plugins/quickicon/phpversioncheck и отвечает за проверку актуальности версии php на хостинге. Там содержится таблица с версиями php и датами окончания их поддержки разработчиком. Задача — определить свежая ли версия php используется сайтом. Если срок её поддержки истёк, вернуть рекомендуемую версию для вывода этой информации владельцу сайта.

Если CMS долгое время не обновлялась, то в ней можно найти примерно такую таблицу с версиями:

Причина ошибки joomla Call to a member function format() on null

Если обратить внимание на выделенную область, можно заметить, что срок использования даже самой последней версии php на момент написания этой статьи истёк.

Это и есть причина проблемы. Логика скрипта нарушена. Он пытается найти и вернуть рекомендуемую версию с актуальным сроком поддержки, а её нет.

Если посмотреть в содержимое этого же файла в последнем дистрибутиве joomla, массив версий php там более полный:


Правильный путь — обновите версию joomla до последней версии. Сделать это можно через раздел «Компоненты -> Обновление Joomla»:

Обновление joomla

Есть и два других (не совсем правильные):

  1. Можно скопировать часть кода с недостающими версиями php из свежей версии Joomla. Эта часть как раз выделена рамкой на втором рисунке.
  2. Выставить права 200 на папку /plugins/quickicon . После этого на главной странице админ-панели вообще пропадут всякие уведомления о доступных обновлениях. Сама возможность обновления при этом сохранится.

Два последних способа конечно не рекомендуется использовать, но они могут оказаться полезными, если разработчики сайта внесли изменения в ядро CMS и её обновление из-за этого не допустимо.


С уважением,
служба поддержки WebGuard.pro

On the Admin panel (and apparently only there), I got the following error:

Call to a member function format() on null

The rest of site and the administrator are working fine.

It’s Joomla 3.8.2 running on php 7.0.33.

I haven’t made any update on the site since its configuration. So unless there was a silent update from Joomla, update of the environments by my provider or hacking, I’ve no clue what may have happened.

I tried to find a log, but couldn’t find any log file reporting the error.

I tried to activate the debug (public $error_reporting = 'maximum'), but it activates it only in the front-end.

mickmackusa's user avatar

mickmackusa

4,5884 gold badges15 silver badges45 bronze badges

asked Feb 20, 2020 at 20:38

lvr123's user avatar

9

If a more meaningful error message can’t be found, it may be difficult to provide an accurate solution.

In the meantime, and since you don’t mention any impediment to upgrading, you may be able to solve the issue by doing some or all of the following:

  1. take a backup of the website before making any changes (I like the free or paid version of Akeeba Backup)
  2. update all third party extensions to the latest versions
  3. update Joomla to the latest version
  4. try updating PHP to a supported version

Even if this does not solve the issue, it is usually easier for volunteers and extension developers to support the latest version of Joomla and extensions rather than trying to recreate a combination of outdated versions to troubleshoot the problem.

answered Feb 21, 2020 at 2:09

Neil Robertson's user avatar

Neil RobertsonNeil Robertson

7,9842 gold badges24 silver badges72 bronze badges

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Call to a member function format() on null

Добрый вечер.
Читаю «Разработка приложений в YII2».

При запуске теста QueryCustomerByPhoneNumberCept выводится ошибка:
Step I fill field «PhoneRecord[number]»,»599.760.3821″
Fail Field by name, label, CSS or XPath element with ‘PhoneRecord[number]’ was not found.

Понаблюдав за выполнением в браузере, лицезрею ошибку при при отправке формы:
Call to a member function format() on null

Это поле Birth date. Крутил/ смотрел метод store в CustomerController, конкретно
$customer_record->birth_date = $customer->birth_date->format(‘Y-m-d’);

так ничего и не нашёл.

Что делаю не так? Может кто-нить сталкивался?

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Call to a member function format() on null

Сообщение

Drugpunker » 2016.04.26, 06:24

Верно. Но данные то ведь в объект передаются.
Поле дата заполняется. Конструктор класса customer присваивает (во всяком случае должен) значение переменной $birth_date. Её уже должен обработать метод format().
Но объект пустой.
Ничего не пойму.

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Call to a member function format() on null

Сообщение

Drugpunker » 2016.04.26, 10:54

Сейчас не дома. Посмотрел код по поиску. По-моему я упустил метод makeCustomer, создающий экземпляр класса. Позже гляну. Пока с Codeception разбирался (изучал), потерялся слегка. Инфа в книге не очень, на мой взгляд, структуирована. Приходится многое разбирать. Да ещё и шаблон advanced взял под обучение.

Onotole

Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Call to a member function format() on null

Сообщение

Drugpunker » 2016.04.27, 17:55

Попоробовал вывести переменную $customer_record->birth_date из метода:

Код: Выделить всё

private function store(Customer $customer)
    {
        $customer_record = new CustomerRecord();
        $customer_record->name = $customer->name;
        $customer_record->birth_date = $customer->birth_date->format('Y-m-d');
        
        /*Вот так вывел*/
       echo $customer_record->birth_date; exit();
       
        $customer_record->notes = $customer->notes;

        $customer_record->save();

Получаю ошибку:
DateTime::__construct(): Failed to parse time string (1566-25-25) at position 6 (5): Unexpected character

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Call to a member function format() on null

Сообщение

Drugpunker » 2016.04.27, 20:18

Нет. И главное же в методе makeCustomer данные есть.

Код: Выделить всё

private function makeCustomer(CustomerRecord $customer_record, PhoneRecord $phone_record)
    {
        $name = $customer_record->name;
        $birth_date = new DateTime($customer_record->birth_date);

        var_dump($name);
        var_dump($birth_date);

        $customer = new Customer($name, $birth_date);
        $customer->notes = $customer_record->notes;
        $customer->phones[] = new Phone($phone_record->number);

        return $customer;
    }

Но передав в метод store — пусто

Код: Выделить всё

private function store(Customer $customer)
    {
        $customer_record = new CustomerRecord();
        $customer_record->name = $customer->name;

        var_dump($customer_record->name);
        var_dump($customer_record->birth_date); exit();
//        var_dump($customer->birth_date); exit();
//        $customer_record->birth_date = $customer->birth_date->format('Y-m-d');
        $customer_record->notes = $customer->notes;

        $customer_record->save();

        foreach ($customer->phones as $phone)
        {
            $phone_record = new PhoneRecord();
            $phone_record->number = $phone->number;
            $phone_record->customer_id = $customer_record->id;
            $phone_record->save();
        }
    }
 

????????????????

Что не так делаю?

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Call to a member function format() on null

Сообщение

Drugpunker » 2016.04.28, 12:15

Вот именно, что там всего один сеттер, устанавливающий поля имени и даты рождения.
Phpstorm не ругается. Всё тянется как нужно. Вчера даже примеры к книге скопипастил, поправил нэймспэйсы. Всё равно не работает. Вечером попробую в очередной раз взглядом чё нить высверлить..

Drugpunker

Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Call to a member function format() on null

Сообщение

Drugpunker » 2016.04.28, 18:39

И так, после очередного удара головой об стенку нашёл таки:

Код: Выделить всё

//    public function _construct($name, $birth_date)
//    {
//        $this->name = $name;
//        $this->birth_date = $birth_date;
//    }

    public function __construct($name, $birth_date)
    {
        $this->name = $name;
        $this->birth_date = $birth_date;
    }

То, что закомментил — неправильно.

Вот же гадина. Несколько дней сверлил глазами эту функцию. :roll:

Стыдно.

Понравилась статья? Поделить с друзьями:
  • Обнаружена непредвиденная ошибка компонента службы теневого копирования томов 0x80042302 виндовс 10
  • Нужно засучить на носу что нельзя заставлять других людей ждать где ошибка
  • Обнаружена неисправимая ошибка directx прочтите файл readme
  • Нужно заново установить драйверы этого устройства код 18 как исправить
  • Обнаружена не проиндексирована google как исправить