Deprecated: Assigning the return value of new by reference is deprecated

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

27.12.2010 10:36

Интерпретатор PHP 5.3 при работе с Magento Connect может сообщать об ошибке: "Deprecated: Assigning the return value of new by reference is deprecated".
Такая ошибка может возникать далеко не всегда.
Обычно она возникает при использовании одной из систем кеширования байт-кода (в частности, eAccelerator).

Устраняется ошибка следующими правками:

в корневом index.php надо заменить:
error_reporting(E_ALL | E_STRICT);

на
error_reporting (
    defined('E_DEPRECATED')
    ? (E_ALL | E_STRICT) &~ E_DEPRECATED
    : E_ALL | E_STRICT
);


Потом:
  • если у вас версия Magento ниже 1.5, то откройте файл downloader/Maged/Pear.php
  • если у вас версия Magento 1.5 или выше, то откройте файл downloader/Maged/Connect.php

там замените:
error_reporting(E_ALL &~ E_NOTICE);

на
error_reporting (
    defined('E_DEPRECATED')
    ? (E_ALL &~ E_NOTICE) &~ E_DEPRECATED
    : E_ALL &~ E_NOTICE
);


в файле lib/Varien/Pear.php надо заменить:
error_reporting(E_ALL &~ E_NOTICE);

на
error_reporting (
    defined('E_DEPRECATED')
    ? (E_ALL &~ E_NOTICE) &~ E_DEPRECATED
    : E_ALL &~ E_NOTICE
);


#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

21.07.2015 12:19

В последней версии 1.9.2.0 Magento Community Edition вызов функции error_reporting из корневого файла index.php был удалён, и при необходимости настройки уровня предупреждений интерпретатора PHP такой вызов надо добавить вручную в соответствии с рекомендациями выше.

В частности, если Вы используете современную версию интерпретатора PHP (ветки 5.6), то надо отключить предупреждения уровня E_DEPRECATED, потому что в Magento 1.x за 8 лет развития накопились вызовы функций, которые современным интерпретатором PHP считаются устаревшими.

Если Вы устанавливаете не вполне качественно разработанную оформительскую тему или модуль, то, вполне возможно, Вам такде потребуется отключить предупреждения уровня E_NOTICE.

Также обратите внимание, что минимально допустимой версией интерпретатора PHP для запуска Magento Community Edition 1.9.2.0 является 5.3.

Поделиться темой: