Solo estaba tratando de instalar PHP 7.4 en un Ubuntu 20.04 nuevo,
Haciendo un simple apt install php php-cli instaló la versión 7.4 por defecto,
¡Pero cuando hago apt update && apt upgrade , la versión sigue siendo 7.4.3 en lugar de 7.4.5 !
Tenga en cuenta que soy consciente de que esto se puede solucionar agregando el repositorio
ppa:ondrej/php.
Solo estoy tratando de entender, si Ubuntu se envía con 7.4 de forma predeterminada, ¿por qué no se actualiza a la última versión? ¿Siempre obtendremos 7.4.3 en Ubuntu 20.04.0 (no el próximo lanzamiento) incluso después de 2 o 3 años? y la única opción es agregar el repositorio ondrej/php ?
Editar: PHP 7.4.6 se lanzó hace unas semanas, pero la versión en mi servidor todavía está bloqueada en 7.4.3.
Esto podría ser un problema con apt . Por alguna razón, apt update && apt upgrade parece apuntar a una versión anterior del software. Si es absolutamente necesario, es posible que deba instalar manualmente la última versión de PHP a través de GitHub o alguna otra fuente confiable.
El repositorio oficial de Ubuntu muestra que la 7.4.3 es la última versión disponible. Entonces ese no es un problema con apt o el almacenamiento en caché como lo sugiere @blizzo.
Dado que estamos hablando de una versión LTS de Ubuntu, es común que algunos paquetes permanezcan desactualizados durante algunos meses debido a razones de estabilidad. (Incluso las versiones de parches pueden introducir errores que hacen que los pensamientos sean irreales, y LTS está destinado a ser muy estable y confiable)
Como escribió en la pregunta original, la mejor solución es usar el repositorio ondrej/php .
Editar:
Le pregunté a ondrej al respecto y respondió amablemente con este enlace: https://wiki.ubuntu.com/StableReleaseUpdates que dice:
Una vez que se ha completado y publicado una versión de Ubuntu, las actualizaciones solo se publican en determinadas circunstancias y deben seguir un procedimiento especial llamado "actualización de versión estable" o SRU.
2. cuando
2.1. Errores de alto impacto
Las actualizaciones de versiones estables, en general, solo se emitirán para corregir errores de alto impacto.
2.2. Otros casos seguros
...
Utilice el código siguiente para actualizar php 7.4.15
sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install -y php7.4 php7.4-cli php7.4-common php7.4-fpm sudo apt-get install -y php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl php7.4-exif php7.4-ftp php7.4-gd php7.4-iconv php7.4-imagick php7.4-json php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer sudo apt-get install -y php7.4-mysqli php7.4-pdo php7.4-sqlite3 php7.4-ctype php7.4-fileinfo php7.4-zip php7.4-exif sudo nano /etc/php/7.4/fpm/php.ini Find: cgi.fix_pathinfo => Remove semi-colon and set 0 cgi.fix_pathinfo=0Guardar y salir
php-v
su versión de php se ha actualizado.
Tenga en cuenta que esto puede arruinar las cosas. Había estado usando PHP 7.4.3 que venía con Ubuntu. Mi experiencia al agregar ppa:ondrej/php no fue buena.
apt upgrade primero quería que instalara PHP 7.4 y PHP 8.0. Luego hizo que PHP 8.0 fuera el predeterminado y quería que ejecutara apt autoremove para deshacerme de la instalación duplicada de PHP 7.4.
Reiniciar Apache hizo que fallara con errores y eliminó todos mis sitios web.
apt install libapache2-mod-php7.4 fue necesario para restaurar el servidor, que ahora muestra PHP 7.4.16, pero todos mis sitios web arrojaban errores de servidor que indicaban que ninguna de mis extensiones de PHP estaba instalada. Después de reinstalar todas las extensiones para PHP 7.4, otro reinicio de Apache restauró mis sitios web.
update-alternatives --config php también ayudó a restablecer la versión de CLI a 7.4.16.
Encontré esta pregunta y ninguna de las respuestas funcionó para mí, lo que funcionó fue:
sudo a2dismod php7.2 sudo a2enmod php7.4 sudo service apache2 restart Ajuste php7.2 a su módulo actual
La respuesta previamente aceptada es incorrecta.
Esta afirmación
es común que algunos paquetes permanezcan desactualizados por algunos meses
deja la impresión de que los lanzamientos de Ubuntu LTS se actualizan constantemente a la versión menor más reciente solo unos meses después de que el equipo de PHP los lanzara.
¡Eso no es cierto!
TL; DR El PHP empaquetado oficialmente de Ubuntu está actualizado en cuanto a seguridad y desactualizado en cuanto a corrección de errores.
Así es como Ubuntu/Canonical mantiene paquetes oficiales como PHP:
Cuando Ubuntu prepara una versión LTS, hay una característica congelada ( detalles ) en algún momento. Eso significa que incluso si el software empaquetado lanza una versión secundaria más nueva (por ejemplo, para corregir errores) antes de que Ubuntu se congele y después del lanzamiento final de LTS, esta actualización de versión secundaria ya no encontrará su camino en Ubuntu.
En el caso de Ubuntu Focal Fossa 20.04 LTS, PHP se congeló en la versión 7.4.3. Eso significa que el paquete php de Focal nunca más recibirá una actualización de versión menor (por ejemplo, 7.4.6) a lo largo de su vida útil de soporte.
Sin embargo, eso no significa que el paquete php de Fossa nunca recibirá actualizaciones.
Lo contrario es cierto: se parcheará con estas llamadas actualizaciones de lanzamiento estables o SRU cortos.
Entonces, ¿qué entra en las SRU?
Principalmente correcciones de errores de alto impacto que se reducen a errores de seguridad la mayor parte del tiempo. Consulte las SRU para conocer lo que Ubuntu considera errores de alto impacto.
De todos modos, lo que termina es que Focal Fossa recibe múltiples versiones parcheadas de PHP 7.4.3 a lo largo de su vida útil. En otras palabras, existen varias versiones de PHP 7.4.3 en Focal Fossa, como puede ver en el registro de cambios del paquete. Muestra varias versiones como 7.4.3-4ubuntu1 , 7.4.3-4ubuntu2 , 7.4.3-4ubuntu2.5 , etc., y puede ver que la mayoría de los errores de seguridad están solucionados.
El problema es que php -v siempre informará PHP 7.4.3 . Sin embargo, eche un vistazo a los detalles de la salida: PHP 7.4.3 (cli) (built: Jul 5 2021 15:13:35) ( NTS ) . El hecho de que se haya construido el 5 de julio de 2021 ya sugiere que algo sucedió con la versión aparentemente antigua 7.4.3.
Para estar realmente seguro de qué versión está instalada, pregunte apt: apt policy php7.4 .
Producción:
En este caso se instala 7.4.3-4ubuntu2.5 . Una vez más, eche un vistazo al registro de cambios del paquete para ver qué se incluye en esa compilación.
Si.
En comparación con PHP 7.4 ChangeLog , descubrirá que todos los problemas de seguridad (CVE) excepto uno (afaik solo afectado por Windows) están solucionados en el paquete de Ubuntu. Aparte de eso, solo se incluyen algunas correcciones de errores que no son de seguridad.
El equipo de seguridad de Ubuntu sigue de cerca la base de datos de CVE y mantiene su propio rastreador de Ubuntu CVE .
Eso depende de tu situacion. Tiendo a decir que es un buen valor predeterminado.
De todos modos, aquí están los hechos en los que debe basar su decisión:
Cuando usa el paquete PHP oficial de Ubuntu, puede estar seguro de que recibirá actualizaciones de seguridad a lo largo de la vida útil de la versión real de Ubuntu (5 años en el caso de una versión LTS como Focal Fossa 20.04). Incluso cuando PHP 7.4 llegue al final de su vida útil (finales de 2022), el equipo de seguridad de Ubuntu seguirá parcheando el paquete oficial de php7.4. En otras palabras, incluso si el equipo de PHP ya no lanza correcciones de seguridad, el equipo de seguridad de Ubuntu lo hará.
Por el contrario, cuando utilice algo como el PPA de Ondrej, tendrá que cambiar a PHP 8 después de finales de 2022. Si no lo hace, su PHP no recibirá más correcciones de seguridad.
Si bien el paquete php de Ubuntu obtendrá correcciones de seguridad, apenas obtendrá correcciones de errores de otro tipo. O tiene suerte y su software no se ve afectado o tendrá que solucionar esos errores. Si un error afecta gravemente a su software (por ejemplo, un problema de rendimiento), puede considerar cambiar a un paquete PPA.