Actualización de su servidor Linux a PHP 7.0

Lo que vas a crear

Imagen de portada a través Ponedor

Introducción

PHP 7 fue lanzado el pasado diciembre. Una vez que haya probado su código localmente para ejecutarlo, es hora de actualizar su servidor de producción. En general, encontré que la mayoría de mis sitios funcionan bien en él..

Sin embargo, sospecho que todavía no se han actualizado muchos sitios. A menudo es más seguro y más fácil mantenerse en versiones anteriores. De hecho, una encuesta de sitios de WordPress mostró que pocos tienen:

"A partir de noviembre de 2016, el 52.9% de los sitios web de WordPress ejecutan una versión de PHP menos PHP 5.5. Solo el 3.4% de los sitios web de WordPress ejecutan PHP 7, la versión principal actual de PHP". a través del verificador de compatibilidad de PHP.

Pero PHP 7 ha estado fuera por casi un año. 

En el episodio de hoy, lo guiaré a través de mi enfoque recomendado para actualizar PHP 7 en Ubuntu 14.x y resolver problemas con PHPMyAdmin, que muchos de los primeros mejoradores se encontraron con.

En este momento, si está utilizando WordPress, instale el complemento Comprobador de compatibilidad de PHP para asegurarse de que no se encontrará con ningún problema inesperado con su matriz de complementos.

Siempre estoy agradecido por sus ideas y comentarios. Si tiene alguna pregunta o sugerencia sobre un tema, publique sus opiniones en los comentarios a continuación..

También puedes contactarme directamente en Twitter @reifman. Esto es especialmente cierto con los scripts de actualización populares como este: donde la experiencia y los comentarios de los usuarios serán únicos y valiosos..

Actualizando su servidor

Intenté usar algunas guías estándar para actualizar PHP 7 y tuve una serie de problemas diferentes. Así que los scripts que comparto con usted a continuación se han probado repetidamente, y creo que lo que estoy presentando funcionará bien para usted.

Una vez más, aprecié mucho a Digital Ocean, que facilita la copia de seguridad de mi servidor y la creación repetida de instancias de prueba para ejecutar los pasos de actualización desde cero.

Empecemos.

Note cualquier personalización a PHP 5

En este punto, es posible que desee tomar nota de las personalizaciones de PHP .ini y posiblemente realizar una copia de seguridad de su archivo php.ini, ya que más adelante deberá migrarlas a PHP 7..

Esto debería ayudarte a encontrar tu archivo .ini:

$ php --ini

Esto me mostró:

$ php --ini Advertencia de PHP: Inicio de PHP: no se puede cargar la biblioteca dinámica '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: no se puede abrir el archivo de objeto compartido: No existe tal archivo o directorio en Desconocido en la línea 0 Archivo de configuración (php.ini) Ruta: / etc / php5 / cli Archivo de configuración cargado: /etc/php5/cli/php.ini Busque archivos .ini adicionales en: / etc / php5 / cli / conf.d… 

Para Apache, la mía estaba en / etc / php5 / apache2.

Eliminar PHP5 y paquetes relacionados

Primero, vamos a purgar todos nuestros paquetes PHP más antiguos. Descubrí que era mejor hacer esto a fondo, cubriendo no solo PHP5 sino también 5.5 y 5.6, que había experimentado en mi servidor.

$ sudo apt-get -y purga php php-common php-mcrypt php-mbstring $ sudo apt-get -y purga php5 php5-common php5-cli libapache2-mod-php5 php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite $ sudo apt-get -y purga php5.5 php5.5-common php5.5-mcrypt php5.5-mbstring $ sudo apt-get - y purgar php5.6 php5.6-common $ sudo apt-get autoremove 

Cuando no eliminé todas estas variaciones de PHP, más tarde tuve problemas al intentar configurar PHP 7. Si tiene un enfoque simple, por favor compártalo en los comentarios..

Agregar un archivo de paquete personal para PHP7 y PHPMyAdmin

$ sudo add-apt-repository ppa: ondrej / php Versiones de PHP coinstalables: PHP 5.5, 5.6, PHP 7.0 y baterías incluidas. Puede obtener más información sobre los paquetes en https://deb.sury.org Para PHP 5.4 en Ubuntu 12.04 use: ppa: ondrej / php5-oldstable FALLAS Y FUNCIONES: Este PPA ahora tiene un rastreador de problemas: https: //deb.sury .org / # bug-reporting POR FAVOR LEA: Si le gusta mi trabajo y quiere motivarme un poco, considere donar regularmente: https://donate.sury.org/ ADVERTENCIA: add-apt-repository no funciona -UTF-8 locales, vea https://github.com/oerdnj/deb.sury.org/issues/56 para la solución: # LC_ALL = C.UTF-8 add-apt-repository ppa: ondrej / php Más información: https://launchpad.net/~ondrej/+archive/ubuntu/php Presione [ENTER] para continuar o ctrl-c para cancelar agregarlo gpg: keyring '/tmp/tmpj6czswxr/secring.gpg' creado gpg: keyring '/ tmp / tmpj6czswxr / pubring.gpg 'creó gpg: solicitando la clave E5267A6C del servidor hkp keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb creó gpg: key E5267A6C: public key " gpg: Número total procesado: 1 gpg: importado: 1 (RSA: 1) OKAY 

Y luego actualicé mis paquetes y distribución y limpié todos los archivos restantes:

$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get autoremove

Puede ver errores como este:

El enlace /vmlinuz.old es un enlace dañado. Al eliminar el enlace simbólico vmlinuz.old es posible que deba volver a ejecutar su cargador de arranque [grub]

Elegí reiniciar en este punto, y eso pareció funcionar:

reinicio de $ sudo

Instalar PHP7

A continuación, instalamos PHP7 y todos sus paquetes:

sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php-apcu php7.0-gd php7.0-mcrypt php-memcache php7.0-curl php7.0-tidy php-xml php -json php7.0-mbstring php-gettext libmcrypt-dev mcrypt php-gd libmcrypt4 libmhash2 libtidy5 libxslt1.1 php-apcu-bc php-pear php7.0-mbstring php7.0-xml

En este punto, deseará migrar cualquier configuración modificada en sus archivos de configuración a /etc/php/7.0/apache2/php.ini.

También necesitaba agregar extension = apc.so a mi archivo php.ini:

$ sudo nano /etc/php/7.0/apache2/php.ini

Pegué eso aquí

; Extension = php_openssl.dll; extension = php_pdo_firebird.dll; extension = php_pdo_mysql.dll; extension = php_pdo_oci.dll; extension = php_pdo_odbc.dll; extension = php_pdo_pgsql.dll; extension = php_pdo_sqlite.dll; extension = php_pgsql.dll; extensión = extensión php_shmop.dll = apc.so

Deshabilitando PHPMyAdmin

En este punto, si está ejecutando PHPMyAdmin, tendrá problemas para recargar Apache. Si es así, deberás deshabilitar PHPMyAdmin:

$ sudo nano /etc/apache2/apache2.conf

Comenta la línea que lo carga en la parte inferior:

# La inclusión de directorios ignora los archivos de copia de seguridad de los editores y dpkg, # vea README.Debian para más detalles. # Incluir fragmentos genéricos de sentencias IncludeOptional conf-enabled / *. Conf # Incluir las configuraciones de host virtual: IncludeOptional sites-enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 sts = 4 sr noet # Include / etc /phpmyadmin/apache.conf

Entonces, habilité mcrypt y mbstring y luego reinicie Apache:

$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo service apache2 restart

Probé esto en un servidor que ejecutaba aplicaciones creadas solo en HTML, para PHP y para Yii1.x, y todas funcionaron.

Reinstalando PHPMyAdmin

A continuación, reparemos la instalación de PHPMyAdmin. Mucha gente luchó con esto..

Primero, agregué el repositorio de paquetes por nijel:

$ sudo add-apt-repository ppa: nijel / phpmyadmin Últimos paquetes de phpMyAdmin - https://www.phpmyadmin.net/. Basado en paquetes disponibles en Debian. Hay algunos cambios notables: * actualmente requiere paquetes PHP actualizados, puede obtener paquetes desde https://launchpad.net/~ondrej/+archive/ubuntu/php/ * incluye copias incrustadas de bibliotecas PHP Si le gusta phpMyAdmin , puede apoyar su desarrollo adicional en https://www.phpmyadmin.net/donate/ o https://www.phpmyadmin.net/sponsors/, ¡gracias! Más información: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Presione [ENTER] para continuar o ctrl-c para cancelar la adición de gpg: keyring '/tmp/tmp6zix40vr/secring.gpg' creado gpg: keyring '/tmp/tmp6zix40vr/pubring.gpg' creó gpg: solicitando la clave 06ED541C desde el servidor hkp keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb creó gpg: clave 06ED541C: clave pública "Launchpad PPA para Michal Čihař "gpg importado: no se encontraron claves confiables en última instancia gpg: Número total procesado: 1 gpg: importado: 1 (RSA: 1) OK 

Luego, actualicé los paquetes e instalé PHPMyAdmin:

$ sudo apt-get update $ sudo apt-get install phpmyadmin 

Tenga en cuenta que esto todavía volverá a cargar un montón de paquetes PHP 5.x más antiguos, pero PHPMyAdmin funcionará en última instancia.

Luego, descomenté la línea PHPMyAdmin que comentamos anteriormente.

$ sudo nano /etc/apache2/apache2.conf

Aquí:

# La inclusión de directorios ignora los archivos de copia de seguridad de los editores y dpkg, # vea README.Debian para más detalles. # Incluir fragmentos genéricos de sentencias IncludeOptional conf-enabled / *. Conf # Incluir las configuraciones del host virtual: IncludeOptional sites-enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 sts = 4 sr noet Include / etc / phpmyadmin / apache.conf

Y, reinicié Apache:

$ sudo service apache2 restart

Asegure su instalación de PHPMyAdmin

Esto instaló PHPMyAdmin nuevamente en la ubicación predeterminada, que es muy insegura y hackeable. Siga las instrucciones de Instalación y uso de PHPMyAdmin con WordPress para asegurar mejor su instalación..

Verificar que PHP 7 se está ejecutando

Después, construí un pequeño phpinfo (); archivo para verificar que PHP 7 estaba activo:

Para concluir

La actualización a PHP 7 en mi Ubuntu 14.x existente fue problemática y requirió muchos cambios de los scripts publicados para hacerlo bien. Espero que encuentre útil el tutorial de hoy..

Si te ha gustado esto, observa los próximos tutoriales en nuestra serie Programming With Yii2 y en la serie Building Your Startup With PHP, que documenta el proceso de creación de mi startup, Meeting Planner.

También puedes seguirme en @reifman en Twitter o consultar la página de mi instructor para ver las actualizaciones. 

enlaces relacionados

  • El PPA principal para PHP (5.5, 5.6, 7.0) con muchas extensiones PECL (Ondřej Surý)
  • Comprobador de compatibilidad de PHP de WordPress Plugin
  • Instalación y uso de PHPMyAdmin con WordPress (Envato Tuts +)