PHP 7 достигает бета-статуса, и в настоящее время проводится множество тестирований. Учитывая, что за последний год Magento догнал от «работает только на PHP 5.3» до «полностью совместим с PHP 5.6», я хотел бы знать, насколько они рассматривают совместимость PHP 7 с Magento 1.x, а также с Magento 2.
Я нашел этот пост Анны Филиной, где она обнаружила одну проблему в Magento 1.9.1 (все еще без изменений в 1.9.2), но, учитывая, что Magento 1 не имеет модульных тестов, я не верю, что это была единственная проблема.
Таким образом, вопрос: будет ли обеспечена совместимость PHP 7 для Magento 1? И так как Magento 2, вероятно, уже был протестирован на PHP 7 (Спасибо, автоматизированные тесты!), Есть ли известные проблемы?
Ответы:
20 января 2016 года Magento официально объявила, что CE и EE 2.0.1 официально поддерживают PHP 7.0.2.
Ссылка: https://magento.com/blog/technical/new-magento-20-resources-and-support-php7
источник
Если вы используете самую последнюю версию, M CE 1.9.2.2, существует расширение, обеспечивающее полную совместимость с PHP 7: https://github.com/Inchoo/Inchoo_PHP7 . (Отказ от ответственности: я автор, хотя сообщество очень помогает.)
Его также можно установить через Composer с http://packages.firegento.com/ .
Все несовместимости, упомянутые здесь, исправлены. Мы думаем, что еще может быть несколько крайних случаев, но ничего не останавливает показ. Тестирование, сообщения о проблемах и запросы на извлечение приветствуются.
источник
Понятия не имею о PHP7, но я думаю, что большинство вещей по-прежнему действует в PHP7, вы можете найти больше информации в блоге Matthias Geniar
Я думаю, что единственное, что у нас может быть в Magento - это
preg_replace()
модификатор eval, но, надеюсь, нет.Кроме того, Magento поставил 1.9.2 с обновленным TAF, который вы можете найти в dev. При этом вы сможете запускать несколько тестов внешнего интерфейса на PHP7 и впоследствии просматривать журнал
источник
Не комментируйте Magento 1, но у Magento 2 действительно были проблемы с именами классов, такими как «String». Это не заняло много времени, чтобы исправить, но это не сработало из коробки. Я ожидаю, что Magento 2 будет исправлен, но он может быть еще не исправлен из-за других приоритетов в первую очередь.
источник
Это почти готово. Я попытался запустить чистый Magento 1.9.2.1 с PHP 7 RC1, что привело к мгновенному сбою (фатальной ошибке) Magento. После исправления этой проблемы все работало, кроме бэкэнда, в который я не смог войти. Позже это оказалось проблемой, связанной с сеансом, которую можно исправить.
Кратко:
Неустранимая ошибка может быть исправлена путем переопределения и
Mage_Core_Model_Layout
изменения строки 555 из:$out .= $this->getBlock($callback[0])->$callback[1]();
в
$out .= $this->getBlock($callback[0])->{$callback[1]}();
Проблема сеанса временно может быть исправлена путем переопределения
Mage_Core_Model_Session_Abstract_Varien
и переписавgetData
,setData
,unsetData
,addFullNames
методы, так везде , где$this->_data
был использован, он будет заменен$_SESSION
.Если кто-то заинтересован в решении, его можно найти здесь .
источник
Varien_File_Uploader
, см. Magento.stackexchange.com/questions/93066/…Magento2 готов к PHP 7. Адаптация кода к PHP7 завершена, и все изменения доступны в ветке разработки. Смотрите вопрос на GitHub
Кроме того, поддержка php 7 в Magento1 требует несовместимых изменений и, думаю, официально не будет поддерживаться.
источник
Существует проблема с тем, как Magento рассчитывает общую сумму заказа и применяет скидки. Это также останавливает экспресс-проверку Paypal, так как позиции не суммируются с общей суммой скидки.
Кажется, проблема в том, что
Mage_Sales_Model_Config_Ordered::_compareTotals()
в PHP7 он работает не так, как в PHP5, иuasort()
теперь полагается на транзитивные отношения для упорядочения, но это не обязательно для итоговых сумм.Попробуйте использовать: -
источник
Это мое исследование, которым я хочу поделиться с вами о несовместимости magento php7. В настоящее время я нашел несколько мест, где код должен был потерпеть неудачу из-за единого синтаксиса переменных.
Файл: приложение / код / ядро / Mage / ImportExport / модель / экспорт / сущность / продукт / тип / Abstract.php
Метод: переопределить атрибут
Файл: приложение / код / core / Mage / ImportExport / Model / Export / Entity / Customer.php
Метод: filterAttributeCollection
Файл: app / code / core / Mage / ImportExport / Model / Import / Uploader.php
Метод: _validateFile
Файл: приложение / код / ядро / Маг / Каталог / Модель / Продукт / Ссылка / Api / V2.php
Метод: назначить
Файл: приложение / код / ядро / Маг / Каталог / Модель / Продукт / Ссылка / Api / V2.php
Метод: обновление
Файл: lib / Varien / File / Uploader.php
Метод: _validateFile
Файл: app / code / core / Mage / Core / Model / Layout.php
Метод: getOutput
источник
В дополнение к другим ответам, связанным с Magento 1:
Несовместимость с PHP 7 в
Zend_XmlRpc_Server
была исправлена в Zend Framework 1.12.12Все версии до CE 1.9.2.2 / EE 1.14.2.2 используют более старую версию Zend Framework, поэтому могут возникнуть проблемы, если вы используете XML-RPC API Magento.
источник
Проверьте файлы из inchoo, которые изменены на совместимость M1 с php 7, это небольшие изменения в нескольких файлах, но интеллектуальная работа от Inchoo. https://github.com/Inchoo/Inchoo_PHP7/tree/master/app/code/local/Inchoo/PHP7
источник
Я использую Magento 2 CE версии 2.1.4 и работает нормально.
Magento \ приложение \ bootstrap.php
источник
Короткий ответ - нет, это не так. Magento CE 1.9.2.4 официально поддерживает только PHP 5.4 и 5.5. И хотя PHP 5.6 работает нормально, он насыщает файлы журналов множеством предупреждающих сообщений.
Длинный ответ заключается в том, что его относительно легко изменить, чтобы запустить поддержку PHP7. Однако многие расширения по-прежнему не совместимы с PHP7, поэтому вы в значительной степени сами по себе.
источник
PHP 7.0 - конец жизни с первой недели декабря 2018 года.
На момент публикации текущая версия Magento 2.2.3 (выпуск от 20 февраля 2018 года) не поддерживает PHP 7.1 или PHP 7.2.
Вы можете подтвердить поддерживаемые версии, проверив
app/bootstrap.php
в папке установки Magento и ищите код, подобный следующему:Также, кажется, есть проблемы,
.htaccess
которые вызывают 500 ошибок с Apache 2.4.Кроме того, включенный файл composer содержит только зависимости для php5.5
источник