[{"data":1,"prerenderedAt":252},["ShallowReactive",2],{"seo-verification":3,"blog-php2shell-docker-reconstruir-imagenes-php-wordpress-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-php2shell-docker-reconstruir-imagenes-php-wordpress-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":190,"ctaBody":191,"ctaButton":192,"ctaUrl":193,"relatedPosts":194},501,"php2shell-docker-reconstruir-imagenes-php-wordpress",{"fr":12,"en":13,"ar":14,"es":10},"php2shell-docker-wordpress-reconstruire-images-php","php2shell-docker-rebuild-php-wordpress-images","php2shell-docker-إعادة-بناء-صور-php-ووردبريس","PHP2Shell y Docker: reconstruya sus imágenes de PHP y WordPress","Actualizar WordPress o Laravel no cambia el PHP de la imagen Docker. Demuestre la versión servida, vea qué etiquetas se movieron y reconstruya sin trampas.",12,0,false,"2026-10-23T00:00:00+00:00","2026-10-23T23:43:01+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fphp2shell-docker-wordpress-reconstruire-images-php-poster.svg",{"categorySlug":34,"appSlug":35},"cms-sitios-web","wordpress","Actualizó WordPress la semana pasada, reinició el contenedor y cree estar protegido frente a PHP2Shell. No es seguro: en un contenedor, PHP vive en la imagen, no en la aplicación, y un reinicio reutiliza la imagen que ya está en el disco. Las correcciones PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35 se publicaron el 21 de octubre de 2026. Esta guía muestra cómo demostrar, contenedor por contenedor, qué PHP responde de verdad, y luego cómo retirar o reconstruir la imagen que no está corregida, para WordPress, Nextcloud, Laravel Octane y una imagen propia.",[38,42,52,68,71,86,89,127,130,145,148,151,160,187],{"type":39,"title":40,"body":41},"h2","Por qué actualizar la aplicación no cambia PHP","Una actualización de WordPress, un `composer update` o una nueva versión de Nextcloud sustituyen archivos de la aplicación. El intérprete PHP es un programa instalado en la imagen Docker, igual que el sistema Debian o Alpine que lo rodea. Mientras la imagen no cambie, PHP no cambia, por muchas actualizaciones que reciba la aplicación.\n\nLa segunda trampa es el reinicio. `docker restart` reinicia el contenedor existente, es decir, la misma imagen. `docker compose up -d` no busca una versión más reciente cuando ya existe en el servidor una imagen con ese nombre: reutiliza la copia local. Solo un `pull` o un `build --pull`, seguido de la recreación del contenedor, cambia el intérprete.\n\nLos dos fallos y los comandos `apt` o `dnf` se explican en \u003Ca href=\"\u002Fblog\u002Fphp2shell-cve-2026-109618-109619-mettre-a-jour-php\">nuestra guía de actualización de PHP\u003C\u002Fa>. Aquí se trata de la imagen Docker y de la prueba de que es la correcta.",{"type":43,"title":44,"items":45},"ul","Seis objetos que no deben confundirse",[46,47,48,49,50,51],"**La imagen del registro** — lo que Docker Hub o su registro privado sirve hoy bajo una etiqueta como `php:8.3-fpm`. Una etiqueta es móvil: apunta a otro contenido tras cada reconstrucción.","**La imagen local** — la copia presente en su servidor, visible con `docker image ls`. Solo cambia si descarga o construye una imagen.","**El contenedor en ejecución** — conserva el identificador de la imagen con la que se creó, aunque una imagen más reciente lleve ahora el mismo nombre.","**El proceso que responde** — PHP-FPM, Apache con `mod_php` o FrankenPHP. Es el que está expuesto, y `php -v` no lo consulta.","**Los demás servicios** — worker de colas, planificador, contenedor `cli` de mantenimiento: cada uno tiene su propia imagen y, por tanto, su propia versión de PHP.","**La caché de construcción** — una capa `FROM` en caché puede reproducir la base antigua sin que aparezca ningún error.",{"type":53,"title":54,"steps":55},"steps","Comparar el registro, la imagen local y el contenedor",[56,59,62,65],{"title":57,"body":58},"Listar las imágenes locales y su fecha","`docker image ls php` (o `wordpress`, `nextcloud`). La columna `CREATED` indica cuándo se construyó la imagen. Una imagen `php:8.3-fpm` creada antes del 21 de octubre de 2026 no contiene la corrección.",{"title":60,"body":61},"Leer la imagen de cada contenedor","`docker ps` muestra en la columna `IMAGE` la etiqueta pedida al crear el contenedor. Para obtener el identificador real de la imagen en uso, consulte el contenedor: `docker inspect --format '{{.Image}}' \u003Ccontenedor>`.",{"title":63,"body":64},"Comparar con la imagen presente en el disco","`docker image inspect --format '{{.Id}}' php:8.3-fpm` devuelve el identificador de la imagen que lleva hoy ese nombre. Si difiere del identificador del contenedor, el contenedor funciona con una imagen más antigua que la del disco: no se recreó tras la última descarga.",{"title":66,"body":67},"Comparar con el registro","`docker pull php:8.3-fpm` termina con una línea `Status: Downloaded newer image for …` cuando llegó una imagen más reciente, o `Status: Image is up to date for …` en caso contrario. En el segundo caso, o bien su copia ya es la última, o bien la etiqueta aún no se ha republicado: contrástela con la fecha de la etiqueta en Docker Hub.",{"type":39,"title":69,"body":70},"Leer la versión que la web sirve de verdad","`php -v` consulta el programa de línea de comandos, no el proceso que responde a las peticiones. La constante `PHP_SAPI` indica cuál habla: `cli` en línea de comandos, `fpm-fcgi` para PHP-FPM, `apache2handler` para Apache con `mod_php`. En una imagen única, las dos versiones casi siempre coinciden. La diferencia aparece en tres situaciones habituales con Docker: un `docker compose run` arranca un contenedor nuevo, es decir, desde la imagen local más reciente, mientras el servicio web sigue en la antigua; un contenedor `cli` de mantenimiento se construyó sobre otra etiqueta que el servicio web; un proxy inverso reenvía a un contenedor distinto del que usted inspecciona.\n\nLa prueba más fiable sigue siendo la petición HTTP: sigue el camino de un visitante y lee `PHP_VERSION` en el proceso que responde. El binario FPM se comprueba como complemento con `docker exec \u003Ccontenedor> php-fpm -v`.",{"type":53,"title":72,"steps":73},"Demostrar la versión servida, servicio por servicio",[74,77,80,83],{"title":75,"body":76},"Dejar un archivo de prueba en la carpeta servida","Ejemplo con el servicio `wordpress` de la imagen oficial, cuya carpeta web es `\u002Fvar\u002Fwww\u002Fhtml` (adapte servicio y ruta a su stack): `docker compose exec wordpress sh -c 'echo \"\u003C?php echo PHP_VERSION, \\\" \\\", PHP_SAPI;\" > \u002Fvar\u002Fwww\u002Fhtml\u002Fv-check.php'`",{"title":78,"body":79},"Consultarlo por HTTP y borrarlo enseguida","`curl -s https:\u002F\u002Fyour-domain.com\u002Fv-check.php` y después `docker compose exec wordpress rm \u002Fvar\u002Fwww\u002Fhtml\u002Fv-check.php`. La respuesta da la versión seguida del SAPI. Compárela con las versiones corregidas: 8.5.12, 8.4.27, 8.3.36 u 8.2.35 según la rama. Un número inferior para su rama significa que la corrección no está.",{"title":81,"body":82},"Comprobar el binario FPM del contenedor","`docker exec \u003Ccontenedor> php-fpm -v` muestra la versión y el SAPI del binario FPM de ese contenedor concreto. Con una imagen Apache basta la petición HTTP del paso anterior: Apache carga `mod_php`.",{"title":84,"body":85},"No fiarse de docker compose run","`docker compose run` crea un contenedor nuevo a partir de la imagen local. Puede anunciar la versión corregida mientras el contenedor del sitio no se ha movido. Compruebe siempre el contenedor que recibe el tráfico.",{"type":39,"title":87,"body":88},"Etiquetas flotantes y fijadas: qué avanza solo","Una etiqueta de rama como `php:8.3-fpm` avanza en el siguiente `pull`: pasa a apuntar a la versión corregida. Una etiqueta exacta como `php:8.3.36-fpm` se queda en su versión, y una referencia por huella (`@sha256:…`) nunca se mueve. La documentación de `docker image pull` es explícita: con una huella, Docker no obtiene ninguna reconstrucción, correcciones de seguridad incluidas, hasta que usted cambie la huella.\n\nLas etiquetas corregidas de la imagen oficial `php` llegaron a Docker Hub durante el día y la noche del 21 de octubre de 2026 (UTC), para las variantes FPM de las ramas 8.5, 8.4, 8.3 y 8.2. Las imágenes oficiales de WordPress `php8.3-fpm`, `php8.4-fpm` y `php8.3-apache` se republicaron el 22 de octubre de 2026 de madrugada (UTC), y las de Nextcloud el mismo día. Una imagen descargada antes de esos momentos es, por tanto, la antigua, aunque el nombre sea idéntico. Compruebe estas fechas en la página de cada etiqueta. La rama 8.2 recibe su corrección pero llega al fin de vida el 31 de diciembre de 2026: planifique su sustitución.",{"type":90,"title":91,"headers":92,"rows":96},"comparison","Qué notación avanza y cuál queda congelada",[93,94,95],"En su compose o Dockerfile","¿Avanza en el siguiente pull?","Para obtener el PHP corregido",[97,101,105,108,112,115,119,123],[98,99,100],"`php:8.3-fpm`","Sí, la etiqueta se republica","`pull` o `build --pull`, y recrear el contenedor",[102,103,104],"`php:8.3.36-fpm`","No, versión exacta","Ya corregida; cámbiela a mano en la siguiente corrección",[106,103,107],"`php:8.3.\u003Cn>-fpm` con n inferior a 36","Pasar a una etiqueta corregida, reconstruir, recrear",[109,110,111],"`wordpress:php8.3-fpm`","Sí, el mantenedor la republica","`pull` y recrear el servicio",[113,114,111],"`wordpress:\u003Cx.y>-php8.3-fpm`","Sí para PHP: el mantenedor la republica",[116,117,118],"`php:8.3-fpm@sha256:…`","Nunca","Sustituir la huella por la de una imagen corregida",[120,121,122],"`FROM php:8.3-fpm` en su Dockerfile","Solo si construye con `--pull`","`build --pull` y recrear el contenedor",[124,125,126],"`image: miregistro\u002Fapp:latest` (su imagen)","No, es su última construcción","Reconstruir, republicar, descargar y recrear",{"type":39,"title":128,"body":129},"Imagen propia: la secuencia y lo que cambia cada opción","Para una imagen construida en casa a partir de `FROM php:8.3-fpm`, la secuencia son tres comandos: `docker compose build --pull --no-cache`, luego `docker compose up -d --force-recreate`, y por último la comprobación de la versión servida. Cada uno responde a una trampa concreta.\n\n`--pull` es la opción que cambia la versión de PHP: pide a Docker que busque una versión más reciente de la imagen base en lugar de reutilizar la del servidor. Sin ella, el `FROM` se resuelve con la copia local y la construcción termina con el intérprete antiguo, sin un solo mensaje.\n\n`--no-cache` reejecuta todas las capas, incluidas `apt-get` y `composer install`, lo que renueva también las bibliotecas del sistema y las dependencias. No hace falta para cambiar de PHP, porque cuando cambia la imagen base las capas siguientes se reconstruyen solas. Sirve cuando una capa en caché congela un paquete que quiere renovar.\n\n`--force-recreate` recrea los contenedores aunque Compose considere que su configuración y su imagen no han cambiado. Así se elimina la duda sobre lo que está en marcha.\n\nReconstruir sus imágenes con cada corrección es un calendario que mantener, no un gesto único. En un VPS con acceso root, ese calendario es suyo, y \u003Ca href=\"\u002Fblog\u002Fdemarrer-avec-docker-vps\">nuestra guía para instalar Docker en un VPS\u003C\u002Fa> sienta la base de trabajo.",{"type":53,"title":131,"steps":132},"Reconstruir y recrear una imagen propia",[133,136,139,142],{"title":134,"body":135},"Comprobar que la etiqueta base está corregida","Abra la página de su etiqueta base en Docker Hub y compruebe que se publicó a partir del 21 de octubre de 2026. Si su `FROM` apunta a una versión exacta más antigua, cámbiela primero.",{"title":137,"body":138},"Reconstruir descargando la base","`docker compose build --pull --no-cache`. Anote la versión antes de la operación con el archivo de prueba, para tener un antes y un después.",{"title":140,"body":141},"Recrear los contenedores","`docker compose up -d --force-recreate`. Un solo comando puede encadenar los tres tiempos: `docker compose up -d --build --pull always`. Recree todos los servicios que usan la imagen: web, worker de colas, planificador.",{"title":143,"body":144},"Demostrar el resultado","Vuelva a ejecutar el archivo de prueba y compare el identificador dado por `docker inspect --format '{{.Image}}' \u003Ccontenedor>` con el de `docker image ls`. La imagen antigua y la nueva pueden llevar el mismo nombre: solo el identificador y la respuesta HTTP hacen fe.",{"type":39,"title":146,"body":147},"WordPress y Nextcloud oficiales: el PHP viene de la etiqueta","Una etiqueta de WordPress combina una versión de WordPress, una versión de PHP y una variante, por ejemplo `php8.3-apache` o `php8.3-fpm`. La rama de PHP la elige el nombre de la etiqueta. Cambiar la versión de WordPress, o dejar que las actualizaciones automáticas actúen en el volumen de datos, no toca esa rama. Para obtener el PHP corregido hay que volver a descargar la etiqueta con `docker compose pull` y recrear el servicio. La variante Apache es la predeterminada y carga PHP como `mod_php`: es la que el proyecto PHP considera más expuesta, con un exploit demostrado antes de que se ejecute código de la aplicación. Trátela con prioridad.\n\nNextcloud sigue el mismo principio, en dos variantes: `apache` incluye un Apache completo, `fpm` necesita un servidor web delante. La documentación de la imagen describe la actualización como un reemplazo: descargar la imagen, tirar el contenedor antiguo, arrancar el nuevo. El código de Nextcloud y sus datos viven en el volumen `\u002Fvar\u002Fwww\u002Fhtml`, que la recreación del contenedor no borra. Vea también \u003Ca href=\"\u002Fblog\u002Fheberger-wordpress\">nuestra guía de WordPress en VPS\u003C\u002Fa> y \u003Ca href=\"\u002Fblog\u002Fheberger-nextcloud\">la de Nextcloud\u003C\u002Fa>.",{"type":39,"title":149,"body":150},"Laravel Octane y FrankenPHP: el motor está en la imagen","Con Octane y FrankenPHP no hay PHP-FPM: el servidor de aplicaciones incorpora el intérprete. Las imágenes oficiales de FrankenPHP se basan en las imágenes oficiales de PHP, y su etiqueta combina la versión de FrankenPHP, la de PHP y el sistema, con la forma `dunglas\u002Ffrankenphp:\u003Cversion>-php8.4-trixie`. El proyecto las reconstruye en cada versión y, cada día a las 4 h UTC, si existen nuevas imágenes oficiales de PHP. Su `FROM dunglas\u002Ffrankenphp` solo recibe la corrección si reconstruye su imagen con `--pull`.\n\nLa trampa propia de Octane es el worker. Octane arranca la aplicación una vez y la mantiene en memoria: `php artisan octane:reload` reinicia con cuidado los workers para cargar el código desplegado. Es el gesto correcto tras un despliegue de código, pero no sustituye al intérprete, que sigue siendo el de la imagen en curso. Lo mismo ocurre con un `kill -USR2` o una recarga de PHP-FPM lanzada en el contenedor antiguo: relanzan los mismos archivos, los de la imagen antigua. Para cambiar de PHP, recree el contenedor, incluidos los de los workers de colas y el planificador. Vea \u003Ca href=\"\u002Fblog\u002Fdeployer-laravel-vps-octane\">nuestra guía de Laravel Octane en VPS\u003C\u002Fa>.",{"type":43,"title":152,"items":153},"Trampas de infraestructura que reproducen la imagen antigua",[154,155,156,157,158,159],"**Caché de build de la CI** — una caché de capas restaurada puede reproducir la capa `FROM`. Añada `--pull` al comando de build de la CI, o invalide la caché en ese paso.","**Registro privado o espejo** — si sus servidores descargan de un registro interno que copia las imágenes a mano o con una tarea programada, compruebe que copió la etiqueta. Si no, `pull` responde `Image is up to date` aunque el mantenedor haya republicado.","**Stack de Portainer o herramienta de orquestación** — actualizar un stack no siempre vuelve a descargar la imagen. Marque la opción de nueva descarga antes de redesplegar si su herramienta la ofrece.","**`pull_policy: missing`** — es el valor predeterminado de Compose sin sección `build`: solo descarga si la imagen no está en el servidor. Solo la etiqueta `latest` se descarga siempre. Use `always`, o `daily` y `weekly` para consultar el registro a intervalos fijos.","**Un servicio olvidado** — web, worker, planificador y contenedor `cli` construidos desde Dockerfile distintos tienen cada uno su base: corríjalos todos.","**Un contenedor huérfano** — un `docker run` olvidado u otro proyecto Compose puede seguir respondiendo en un puerto. Liste todo lo que está en marcha con `docker ps`.",{"type":90,"title":161,"headers":162,"rows":166},"Solución de problemas: lo que ve y lo que significa",[163,164,165],"Lo que observa","Causa probable","Remedio",[167,171,175,179,183],[168,169,170],"`pull` muestra `Status: Image is up to date` pero la versión sigue siendo antigua","La etiqueta aún no se ha republicado, o descarga una versión exacta o una huella","Comparar con la fecha de la etiqueta en Docker Hub y pasar a una etiqueta corregida",[172,173,174],"`up -d` no cambia nada tras una descarga","El contenedor existente no se recreó","`docker compose up -d --force-recreate` y comparar los identificadores de imagen",[176,177,178],"El build termina en pocos segundos, con la base ya en caché","Falta `--pull`: se reutiliza la base del servidor","`docker compose build --pull`, con `--no-cache` si también hay que renovar paquetes del sistema",[180,181,182],"`docker compose run` anuncia la versión corregida, el sitio responde la antigua","`run` crea un contenedor nuevo, el servicio web no se recreó","Comprobar por HTTP el contenedor que recibe el tráfico y recrearlo",[184,185,186],"La versión es correcta pero un worker se comporta como antes","Un worker de colas o de Octane sigue en un contenedor antiguo","Recrear todos los contenedores que usan la imagen, no solo el servicio web",{"type":39,"title":188,"body":189},"La documentación oficial","Las fuentes: \u003Ca href=\"https:\u002F\u002Fwww.php.net\u002Farchive\u002F2026.php\">los anuncios de seguridad y versiones de PHP\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fcompose\u002Fup\u002F\">docker compose up\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fcompose\u002Fbuild\u002F\">docker compose build\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcompose-file\u002Fservices\u002F#pull_policy\">el atributo pull_policy\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fimage\u002Fpull\u002F\">docker image pull\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002F_\u002Fphp\">la imagen php\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002F_\u002Fwordpress\">la imagen wordpress\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fdocker\">la imagen de Nextcloud\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Ffrankenphp.dev\u002Fdocs\u002Fdocker\u002F\">FrankenPHP con Docker\u003C\u002Fa> y \u003Ca href=\"https:\u002F\u002Flaravel.com\u002Fdocs\u002F12.x\u002Foctane\">Laravel Octane\u003C\u002Fa>.","Un VPS donde usted lleva sus imágenes y su calendario","En un VPS ServOrbit.com dispone de acceso root y una IPv4 dedicada: sus imágenes Docker, sus etiquetas y el momento de cada reconstrucción son suyos. También existe una opción de administración VPS; sus condiciones se describen en la página de la oferta.","Descubrir los VPS","\u002Fvps-cloud",[195,212,232],{"id":196,"slug":197,"slugs":198,"title":202,"excerpt":203,"readTime":204,"views":205,"isPinned":19,"publishedAt":206,"updatedAt":207,"category":208,"categories":209,"featuredImage":30,"bgImage":31,"posterImage":211,"relatedSolution":30},489,"php2shell-cve-2026-109618-109619-actualizar-php",{"fr":199,"en":200,"ar":201,"es":197},"php2shell-cve-2026-109618-109619-mettre-a-jour-php","php2shell-cve-2026-109618-109619-patch-php","php2shell-cve-2026-109618-109619-تحديث-php","PHP2Shell: cómo corregir CVE-2026-109618 y CVE-2026-109619","PHP2Shell: dos fallos críticos de PHP explotables sin cuenta. Versiones corregidas, comandos de actualización por sistema y medidas temporales.",9,1,"2026-10-22T00:00:00+00:00","2026-10-22T01:57:44+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[210],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fphp2shell-cve-2026-109618-109619-mettre-a-jour-php-poster.svg",{"id":213,"slug":214,"slugs":215,"title":219,"excerpt":220,"readTime":221,"views":18,"isPinned":19,"publishedAt":222,"updatedAt":21,"category":223,"categories":228,"featuredImage":30,"bgImage":31,"posterImage":230,"relatedSolution":231},73,"alojar-wordpress-en-un-vps",{"fr":216,"en":217,"ar":218,"es":214},"heberger-wordpress","host-wordpress-on-your-own-vps","استضافة-wordpress-على-خادم-vps-الخاص-بك","Alojar WordPress en su propio VPS","Aloje WordPress en su VPS para un rendimiento y un control máximos: Docker, MariaDB, caché, reverse proxy y SSL.",7,"2026-04-08T00:00:00+00:00",{"id":221,"name":224,"slug":225,"color":226,"icon":227},"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[229],{"id":221,"name":224,"slug":225,"color":226,"icon":227},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":225,"appSlug":35},{"id":233,"slug":234,"slugs":235,"title":238,"excerpt":239,"readTime":240,"views":18,"isPinned":19,"publishedAt":241,"updatedAt":242,"category":243,"categories":249,"featuredImage":30,"bgImage":31,"posterImage":251,"relatedSolution":30},436,"laravel-octane-vps-frankenphp-docker-traefik",{"fr":236,"en":234,"ar":237,"es":234},"deployer-laravel-vps-octane","laravel-octane-على-vps-frankenphp-docker-traefik","Laravel Octane en VPS: FrankenPHP, Docker y Traefik","Migrar de PHP-FPM a Laravel Octane con FrankenPHP en Docker Compose detrás de Traefik, entender los cambios del ciclo de vida.",11,"2026-10-12T00:00:00+00:00","2026-10-13T14:10:28+00:00",{"id":244,"name":245,"slug":246,"color":247,"icon":248},4,"Desarrollo","developpement","bg-warning\u002F10 text-warning","dev",[250],{"id":244,"name":245,"slug":246,"color":247,"icon":248},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-octane-poster.svg",1792799494500]