PHP 7 está alcanzando el estado beta y se están realizando muchas pruebas en este momento. Dado que Magento se puso al día en el último año desde "ejecuta solo en PHP 5.3" hasta "totalmente compatible con PHP 5.6", me gustaría saber cuánto están considerando la compatibilidad de PHP 7 para Magento 1.x y Magento 2.
Encontré esta publicación de Anna Filina donde encontró un problema en Magento 1.9.1 (aún sin cambios en 1.9.2), pero dado que Magento 1 no tiene pruebas unitarias, no confío en que este sea el único problema.
Entonces la pregunta es: ¿se garantizará la compatibilidad de PHP 7 para Magento 1? Y como Magento 2 probablemente ya ha sido probado en PHP 7 (¡Gracias a las pruebas automatizadas!), ¿Hay algún problema conocido?
Respuestas:
Magento anunció oficialmente el 20 de enero de 2016 que CE y EE 2.0.1 admiten oficialmente PHP 7.0.2.
Enlace: https://magento.com/blog/technical/new-magento-20-resources-and-support-php7
fuente
Si está utilizando la versión más reciente, M CE 1.9.2.2, hay una extensión que lo llevará a la compatibilidad completa con PHP 7: https://github.com/Inchoo/Inchoo_PHP7 . (Descargo de responsabilidad: soy el autor, aunque hay mucha ayuda de la comunidad).
También se puede instalar a través de Composer desde http://packages.firegento.com/ .
Todas las incompatibilidades mencionadas aquí son fijas. Creemos que todavía puede haber algunos casos extremos, pero nada que parezca espectacular. Pruebas, informes de problemas y solicitudes de extracción son bienvenidos.
fuente
No tengo idea sobre PHP7, pero supongo que la mayoría de las cosas aún son válidas en PHP7, puedes encontrar más información en el blog de Matthias Geniar
Creo que lo único que podríamos tener en Magento es el
preg_replace()
modificador eval pero espero que no.Además de esto, Magento envió 1.9.2 con un TAF actualizado, que puede encontrar en dev. Con esto, debería poder ejecutar un montón de pruebas frontend en PHP7 y examinar el registro después
fuente
No hay comentarios sobre Magento 1, pero Magento 2 tuvo algunos problemas con los nombres de clase como "String". No tardó mucho en solucionarlo, pero no funcionó de fábrica. Espero que Magento 2 se arregle, pero es posible que aún no se arregle debido a otras prioridades primero.
fuente
Está casi listo Intenté ejecutar un Magento 1.9.2.1 limpio con PHP 7 RC1, lo que resultó en un bloqueo instantáneo (error fatal) de Magento. Después de solucionar este problema, todo parecía funcionar, excepto el backend, en el que no pude iniciar sesión. Más tarde resultó ser un problema relacionado con la sesión que puede ser parcheado.
Brevemente:
El error fatal se puede solucionar anulando y
Mage_Core_Model_Layout
luego cambiando la línea 555 de:$out .= $this->getBlock($callback[0])->$callback[1]();
a
$out .= $this->getBlock($callback[0])->{$callback[1]}();
El problema sesión de forma temporal puede fijarse por razones imperiosas
Mage_Core_Model_Session_Abstract_Varien
y reescribir elgetData
,setData
,unsetData
,addFullNames
métodos, por lo que en todas partes donde$this->_data
se utilizó, que serán reemplazados por$_SESSION
.Si alguien está interesado en la solución, puede encontrarla aquí .
fuente
Varien_File_Uploader
, consulte magento.stackexchange.com/questions/93066/…Magento2 está listo para PHP 7. Se realizó la adaptación del código a PHP7 y todos los cambios están disponibles en la rama de desarrollo. Ver problema en GitHub
Además, el soporte de php 7 en Magento1 requiere cambios incompatibles con versiones anteriores y creo que no será compatible oficialmente.
fuente
Hay un problema con la forma en que Magento calcula el total general de la orden y aplica los descuentos. Esto también detiene el pago rápido de Paypal, ya que las líneas de pedido no se suman al total general con el descuento.
El problema parece ser que
Mage_Sales_Model_Config_Ordered::_compareTotals()
no funciona igual en PHP7 que PHP5, yuasort()
ahora depende de una relación transitiva para el pedido, pero esto no tiene que ser para los totales de pedidos.Intenta usar: -
fuente
Esta es mi investigación que quiero compartir con ustedes sobre las incompatibilidades con magento php7. Actualmente he encontrado algunos lugares donde el código debería fallar debido a la sintaxis variable uniforme.
Archivo: app / code / core / Mage / ImportExport / Model / Export / Entity / Product / Type / Abstract.php
Método: overrideAttribute
Archivo: app / code / core / Mage / ImportExport / Model / Export / Entity / Customer.php
Método: filterAttributeCollection
Archivo: app / code / core / Mage / ImportExport / Model / Import / Uploader.php
Método: _validateFile
Archivo: app / code / core / Mage / Catalog / Model / Product / Link / Api / V2.php
Método: asignar
Archivo: app / code / core / Mage / Catalog / Model / Product / Link / Api / V2.php
Método: actualización
Archivo: lib / Varien / File / Uploader.php
Método: _validateFile
Archivo: app / code / core / Mage / Core / Model / Layout.php
Método: getOutput
fuente
Además de las otras respuestas relacionadas con Magento 1:
Se
Zend_XmlRpc_Server
ha corregido una incompatibilidad PHP 7 en Zend Framework 1.12.12Todas las versiones anteriores a CE 1.9.2.2 / EE 1.14.2.2 usan una versión anterior de Zend Framework, por lo que podrían tener problemas si usa la API XML-RPC de Magento.
fuente
Verifique los archivos de inchoo que se cambiaron para hacer que M1 sea compatible con php 7, esos son cambios menores en pocos archivos pero trabajo inteligente de Inchoo. https://github.com/Inchoo/Inchoo_PHP7/tree/master/app/code/local/Inchoo/PHP7
fuente
Estoy usando Magento 2 CE versión 2.1.4 y funciona bien.
magento \ app \ bootstrap.php
fuente
La respuesta corta es no, no lo hace. Magento CE 1.9.2.4 solo es compatible con PHP 5.4 y 5.5 oficialmente. Y aunque PHP 5.6 lo ejecuta bien, satura los archivos de registro con multitud de mensajes de advertencia.
La respuesta larga es que es relativamente fácil modificarlo para ejecutar el soporte PHP7. Sin embargo, muchas extensiones aún no son compatibles con PHP7, por lo que en gran medida está solo.
fuente
PHP 7.0 finaliza a partir de la primera semana de diciembre de 2018.
A partir de esta publicación, la versión actual de Magento 2.2.3 (versión del 20 de febrero de 2018) no es compatible con PHP 7.1 o PHP 7.2.
Puede confirmar las versiones compatibles al ingresar
app/bootstrap.php
a su carpeta de instalación de Magento y buscar un código similar al siguiente:También parece haber problemas en los
.htaccess
que se producen 500 errores con apache 2.4.Además, el archivo del compositor incluido solo contiene dependencias para php5.5
fuente