cancel
Showing results for 
Search instead for 
Did you mean: 

From PHP 7.0 to PHP 7.2 in Magento 2.3

okopylova
Adobe Team

PHP 7.0 Support is Dropped in Magento 2.3

 

We expect to release Magento 2.3 in 2018, and we will support this version for two years. At the same time, PHP 7.0 is nearing its end of life. Security releases will terminate in December 2018. PHP 7.1 will be actively supported until the end of the year, and we will provide security support for one additional year. The latest version, PHP 7.2, will be fully available and supported for the next two years.

 

PHP Release and Support Schedule

Screen Shot 2018-03-20 at 10.14.34 PM.png

(source: https://php.net/supported-versions.php)

 

Though all three versions (7.0, 7.1, and 7.2) of PHP are currently still supported at some level, there are several concerns about PHP 7.0 support:

  • End of life. There will be just a few months of security support for PHP 7.0 after Magento 2.3 is released. And after that, it’s not recommended for websites, especially e-commerce stores, to stay on an old technology that is not issuing security fixes. Additionally, it might be against compliance with standards like PCI-DSS.
  • Limitations for developers. PHP 7.0 prevents developers from taking advantage of the latest PHP features, such as nullable types, class constant visibility, and others.

Comparing benefits with risks and maintenance overhead, we decided to drop PHP 7.0 support as of Magento 2.3.0. Magento 2.3 will fully support PHP 7.1 in 2.3.0, as this version has been available since Magento 2.2.0. PHP 7.2 will be supported in an experimental mode in Magento 2.3.0 and final support will be provided in one of the patch releases of Magento 2.3.

 

Dropping support of PHP 7.0 complicates the process of upgrading from Magento 2.1 to Magento 2.3. Since Magento 2.1 does not support PHP 7.1, the upgrade is possible only by switching the PHP version in the middle of the upgrade.

 

The general process of upgrading from Magento 2.1 to Magento 2.3 using the command line will be:

  1. Put the store in maintenance mode.
  2. Change the PHP version to 7.1.
  3. Update the code to Magento 2.3. 4. Follow the regular upgrade instructions.

The process for upgrading with the Setup Wizard will be:

  1. Upgrade to Magento 2.2.
  2. Put the store to the maintenance mode.
  3. Change PHP version to 7.1 with the help of your hosting provider.
  4. Upgrade to Magento 2.3.

Note: Detailed instructions will be available on Magento Devdocs.

 

PHP 7.2 Support in Magento 2.3

 

PHP 7.2 was released in November 2017. The Magento team (with the help of the community) is working to fully support PHP 7.2 in Magento 2.3. You can find more information about the project at the Community Engineering wiki or at the ZenHub board (requires GitHub login).

 

Currently, all 3rd-party libraries used in Magento support PHP 7.2. We are updating Magento code itself to eliminate PHP 7.2 incompatibilities. Magento 2.3.0 will include any backward-incompatible fixes necessary for PHP 7.2 support. Fully tested support of PHP 7.2 will be delivered in the following patch releases.

 

If you are interested in participating in a Magento community projects, there is still a set of tasks where you can help:

  • Challenging, such as mcrypt replacement with libsodium. Though the minimum plan is to use the mcrypt_compat library for Magento 2.3.0, it is still necessary to move to libsodium, which will improve encryption implementation in Magento.
  • Famous, such as removal of Zend Framework 1
  • Small tasks that help you gain experience contributing, such as fixing various build issues or updating libraries to the latest versions

See the ZenHub board for the full list of issues.

 

Bonus: Zend Framework 1 Cleanup

 

Due to Magento’s intensive use of ZF1, we have not been able to completely eliminate ZF1 in our attempts to migrate to ZF2. Because its authors do not support ZF1 any more, it became Magento’s responsibility to maintain it and to provide security fixes to the magento/zf1 repository. PHP 7.2 support highlighted this issue once again. We decided to start the ZF1 clean-up in scope of the PHP 7.2 project. “Clean-up” means the removal of unused or lightly used ZF1 libraries from its repository. As a result, the following ZF1 libraries will be removed in the Magento 2.3.0 release:

 

  • Zend_Amf
  • Zend_Application
  • Zend_Auth
  • Zend_Barcode
  • Zend_Cache_Backend_Sqlite
  • Zend_Captcha
  • Zend_Cloud
  • Zend_CodeGenerator
  • Zend_Controller
  • Zend_Db_Profiler_Firebug
  • Zend_Debug
  • Zend_Dojo
  • Zend_Dom
  • Zend_EventManager
  • Zend_Feed
  • Zend_Form
  • Zend_Gdata
  • Zend_Layout
  • Zend_Ldap
  • Zend_Log_Formatter_Firebug
  • Zend_Log_Writer_Firebug
  • Zend_Log_Writer_Mail
  • Zend_Markup
  • Zend_Mobile
  • Zend_Navigation
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Queue
  • Zend_Reflection
  • Zend_Rest
  • Zend_Search
  • Zend_Serializer
  • Zend_Service
  • Zend_Stdlib
  • Zend_Tag
  • Zend_Test
  • Zend_Tool
  • Zend_Validate_Ldap_Dn
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc

 

The list is based on how often the libraries were used in Magento core products and in Magento Marketplace extensions.

 

For extensions that still use ZF1 libraries (even ones not from the above list), we highly encourage you to switch to other libraries (including ZF2/3, Symfony, and others). Switching libraries will help avoid future incompatibility issues, in case Magento removes more libraries from the ZF1 repository.

 

Please leave your feedback or suggestions.

2 Comments