Operations | Monitoring | ITSM | DevOps | Cloud

PHP2Shell explained: blocked 22 hours before the patch existed

PHP2Shell let attackers run code on PHP servers without logging in, and updating a CMS or its plugins didn't help. Only a new version of PHP fixed it. In this explainer, we break down how the two flaws work (CVE-2026-109618 and CVE-2026-109619, both rated 9.2 critical) and what Upsun Cloud did between PHP's one-day warning and the fix. We get into.

7 weak points in your delivery model to fix before your next audit or outage

An auditor asking for evidence of your deployment process and an incident review asking what went wrong are asking about the same things. The difference is timing. One catches the weak point before it costs you anything. The other catches it in the middle of an outage, with a customer on the phone.

Before you build your own internal platform, run these numbers

"We'll just build it ourselves" is usually said with confidence and a rough headcount estimate. Six months later, the team that was supposed to spend two sprints on it is still maintaining it a year in, and the platform that was meant to save engineering time has become one of the things engineering time goes to. Build isn't automatically the wrong call. Sometimes it's the right one.

How Upsun handled PHP2Shell: protection in place 22 hours before the patch

On 21 October 2026, the team behind PHP released an emergency fix for two critical security flaws. PHP is the programming language behind a large share of the web, including WordPress, Drupal and many online stores. Researchers at Wiz named the flaws PHP2Shell. An attacker could use them to take control of a website without ever logging in. Updating a website, its CMS, or its plugins doesn't help. The only real fix is (and was) a new version of PHP itself.

The Upsun Performance Agent: a diagnosis instead of a call graph

The data to explain a slow endpoint is usually already sitting in your project. Blackfire has the profile. Continuous profiling has the flame graph. The traffic numbers show which route matters. The code is in git. What takes the afternoon is putting those four things next to each other and working out which function is responsible. That afternoon is what the Upsun Performance Agent is for.

The hidden cost of environment drift

Two teams, same company, same platform, same quarter. Team A ships to production three times a day. Their environments are defined in code, provisioned the same way every time, and a new engineer can get a working setup before lunch. Team B ships once every two weeks, if the release window holds. Their staging environment has diverged from production in ways nobody fully remembers approving. Getting a new engineer set up takes a week of Slack messages to whoever still remembers how it was done last time.

AI wrote the bug. You need production data to reproduce it

A pull request lands with a function an AI assistant generated. It reads cleanly, passes the existing tests, and gets merged. Three weeks later it breaks, but only for accounts with a specific billing history. Nobody wrote a test for that condition because nobody was thinking about it when the code went in. Now someone has to debug logic they didn't reason through, against a failure they can't picture without the exact data that triggered it. Debugging someone else's code has always worked this way.

From bug report to verified fix in a single workflow

Most debugging content shows one feature in isolation. This walkthrough covers the whole path. The bug: a discount code stopped applying for customers on annual billing plans. It passed every existing test, worked for monthly accounts, and failed only for a subset of real annual customers. Nobody had reproduced it outside production. Here's how it went from ticket to verified fix.

Spin up a full-stack preview environment in seconds, zero config

A pull request goes up. The reviewer wants to see it running, not just read the diff, so someone pings the team: can I get an environment for this? Depending on who's around, that could take an hour. It could take until tomorrow. By the time the environment exists, the reviewer has moved on to something else, and getting their attention back is its own task. What if the preview URL was already sitting in the PR before anyone had to ask?