Bliv en del af mit community / gratis nyhedsbrev — tilmeld dig her
- Client
- GrN.dk — serverflåde (12 produktions-vhosts)
- Sector
- Vedligeholdelsesautomatisering / DevOps
- Periode
- juli 2026 — løbende
At a glance
Tolv produktionswebsites på én server, hver med sit eget Composer-dependency-træ, og hostingens ældste spørgsmål: er de opdaterede — og er det sikkert at opdatere dem? Dependency-aktualitets-gaten svarer ugentligt og automatisk — den inventerer hver vhost, tjekker hvert dependency-træ mod den PHP-version, sitets webserver faktisk kører, sætter de semver-sikre opdateringer i kø til godkendelse og rapporterer de breaking i stedet for at anvende dem.
The challenge
Upatchede dependencies er sådan, sites bliver overtaget — men en blind composer update er sådan, sites går ned, og mellem de to ligger en lumsk fælde. En servers kommandolinje-PHP er ofte nyere end den PHP, webserveren kører, så en opdatering resolvet med CLI'en kan installere pakker, det live site bogstaveligt talt ikke kan eksekvere. Præcis den fejl — CLI-resolvede dependencies, der kun var til 8.4, på sites der servede PHP 8.3 — havde allerede givet HTTP 500 på to live sites her. Løsningen skulle gøre den fejlklasse umulig, ikke bare mindre sandsynlig.
The solution
Et firefaset værktøj, bygget som separate godkendte etaper: et inventar over hver vhost og dens reelle runtime; et aktualitetstjek, der kører Composers resolver som hvert sites egen web-PHP (lsphp 8.3, ikke den nyere CLI-PHP) og deler tilgængelige opdateringer i semver-sikre bumps og breaking majors; en apply-etape, der snapshotter composer.lock og vendor-træet, før noget røres, så én kommando ruller et site tilbage; og en ugentlig cron, der gentager tjekket på tværs af flåden og mailer rapporten.
De svære skøn forbliver menneskelige: sikre bumps sættes i kø og anvendes efter godkendelse, majors listes med, hvad de ville brække, og intet anvendes nogensinde automatisk.
The results
Gaten har kørt ugentligt siden midten af juli 2026. En typisk rapport: 12 vhosts scannet, en håndfuld sikre bumps sat i kø, nul anvendt uden godkendelse. De to sites, der var brudt af CLI-PHP-fælden, blev repareret ved at re-resolve mod deres web-PHP, og grundårsagen er nu strukturelt lukket — resolveren ser simpelthen aldrig en PHP, det live site ikke har.
Det er den mindst glamourøse case på denne side og muligvis den mest værdifulde: forskellen på »vi burde virkelig få opdateret de sites en dag« og en mandag-morgen-mail, der siger præcis, hvad der er sikkert at gøre.