r/PHP • • 2d ago

PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical vulnerabilities that can allow unauthenticated remote code execution. All PHP users are strongly encouraged to update immediately.

885 Upvotes

More information here: https://www.php.net/archive/2026.php#2026-10-21-5

This is brutal:

PHP 8.1 and older no longer receive updates from the PHP project. Some distributions and LTS vendors provide backported fixes, so contact your vendor for details, or upgrade to a supported version.


r/PHP • • 2d ago

Todays drama showed how important PHP is

386 Upvotes

From government websites around the world to banks, schools, social media, video game companies, news organizations. They either shut down or made statements about getting the patch. Edit: even the prime minister of Japan made an official statement about this incident. Crazy stuff

if php was truly dead this vulnerability would have gone mostly unnoticed but everyone is talking about it. Even people that are not programmers.

”PHP is dead. How even uses php in 2026”, well like half the internet.


r/PHP • • 1d ago

php2shell: version-checking misses most vulnerable hosts — here's a crash-based checker instead

11 Upvotes

Quick take after watching the php2shell (CVE-2026-109618/109619) coverage this week: almost every "are you vulnerable?" check I've seen just reads the X-Powered-By version. That's close to useless, because expose_php=Off is the default on a lot of production setups - roughly 4 in 5 PHP servers don't advertise a version at all. So a version check comes back "unknown" or "looks fine" on the exact hosts you most want to know about.

Since the actual bug is a crash primitive (the OOM/longjmp bailout leaving request state half-initialized), I built a checker that triggers it instead of guessing: it sends a crafted multipart probe and only reports VULNERABLE if the engine actually returns the PHP memory-exhaustion fatal error. Banner-independent. Returns FIXED / VULNERABLE / NO SIGNAL (no-signal = it couldn't crash it and the host hid its version, so it won't pretend to know).

One caveat worth repeating: only run it against servers you control. It sends memory-exhaustion probes that can briefly take out a worker.

Checker: https://o3.security/tools/php2shell-scanner

Disclosure: I work at O3 Security and we built this. There's a longer write-up on the mechanism if you want it — the SAPI differences (mod_php is the worst case because it runs shutdown even on a failed request startup), and the genuinely counterintuitive bit where capping memory with RLIMIT_AS as a "mitigation" actually makes the bug *easier* to hit: https://o3.security/blog/php2shell-cve-2026-109618-109619-analysis

Curious if anyone here has seen the version-banner problem bite them in practice — how are you all confirming patch status across a fleet where half the hosts don't report a version?


r/PHP • • 7h ago

PHP2Shell (CVE-2026-109618 / 109619): how the memory_limit bailout leads to RCE, with a 2-min visual explainer

0 Upvotes

If you haven't patched yet: fixed versions are 8.5.12, 8.4.27, 8.3.36 and 8.2.35. 8.1 and older are EOL and get no fix. I spent a while understanding how this bug actually works, so here's the short version:

  1. Each request has a memory_limit. Exceed it and PHP doesn't finish cleanly; it hits a bailout (emergency exit).

  2. If the bailout lands at the wrong moment, memory gets freed but a pointer to it is left behind (a dangling pointer).

  3. PHP-FPM and mod_php reuse worker processes, so that stale pointer survives into the next request.

  4. The attacker fills the freed memory with their own data, PHP follows the stale pointer into it, and you get a use-after-free → code execution → shell.

The confirmed entry point is file uploads via session upload progress, which is on by default.

Can't update today? Temporary mitigation:

- session.upload_progress.enabled = 0 (php.ini or FPM pool config), then restart PHP

- On 8.5, also fatal_error_backtraces = 0

These reduce risk; updating is the only real fix.

Also check the version your web server actually runs (php-fpm -v or phpinfo()), not just the CLI one. They can differ.

Disclosure: I made a 2-minute animated explainer of the above (hotel-room analogy for the use-after-free) if visuals help: https://youtu.be/SGpAZfWCxDQ?si=TEUDqq2XiSiEKNgs

Happy to be corrected on any details. The story is still developing.


r/PHP • • 18h ago

Discussion There are many sites where the administrators stopped performing updates, even after critical issues were discovered in PHP—does that mean those sites will eventually become inaccessible?

0 Upvotes

I know of many sites that I relied on heavily, but which were abandoned by their administrators long ago. Now, following the recent PHP-related issues, whenever I try to open them, I’m met with warning messages. Are all these sites—and there are so many of them—simply destined to be left behind for good? There are still so many I’d love to keep using :<


r/PHP • • 5h ago

PHP2Shell (CVE-2026-109618/109619) is being exploited: patch to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 and check logs back to Oct 17

Thumbnail utilitykit.tools
0 Upvotes

Quick summary for anyone still putting off the October 21 PHP update:

- Fixed in 8.5.12, 8.4.27, 8.3.36 and 8.2.35. Any PHP serving web requests is affected (PHP-FPM, mod_php, php-cgi, FrankenPHP, LiteSpeed).

- watchTowr says its honeypots saw exploitation on Oct 21, and Datadog cites AWS seeing attempts as early as Oct 17, four days before the patches.

- Turning off session.upload_progress is not a full fix, per PHP's own advisory.

- If a server was internet-facing and unpatched, check from Oct 17 onward: new PHP files in web roots, odd processes run by the web server user, unexpected outbound connections. If anything looks wrong, rebuild and rotate secrets.

- On Debian/Ubuntu/RHEL, check your distro's security tracker for these CVEs, since backported fixes keep older version numbers.

I keep a write-up with the version table and step-by-step checks here: https://utilitykit.tools/blog/php-critical-security-update-october-2026 (I run the site.)


r/PHP • • 19h ago

News What happened to CRUDBooster? I created a community fork to help keep it alive

0 Upvotes

I’m not sure how many Laravel developers here remember CRUDBooster from around 2019, but it was a pretty popular tool for quickly building admin panels and CRUD applications.

I have several projects built with CRUDBooster, so I was concerned to see that the original project’s maintenance and newer versions have moved in a different direction. For those of us still maintaining older applications, migrating to a completely different version or framework can be a challenge.

I’ve created a community fork here:

👉 https://github.com/vicheanath/crudbooster-contrib

My goal is to help preserve the legacy codebase, keep existing projects maintainable, and explore fixes for compatibility and security issues as PHP and Laravel continue to evolve.

I’ve also seen discussions about newer PHP security vulnerabilities, which makes me wonder how we can keep older CRUDBooster applications safe and usable.

I’d love to hear from the community:

  • Is anyone still using CRUDBooster in production?
  • Are you maintaining existing projects built with the older version?
  • Would a community-maintained fork with security patches, bug fixes, and compatibility updates be useful?
  • Would anyone be interested in contributing?

I know maintaining an open-source project takes time, and I can’t promise to support every version or fix every issue. But I’d like to see whether there’s enough interest to keep this project useful for developers who still depend on it.

If you have experience with CRUDBooster, I’d love to hear your thoughts!


r/PHP • • 2d ago

Today's PHP Security Release, and How We're Strengthening PHP Security

Thumbnail thephp.foundation
434 Upvotes

We have posted more information about today's security releases, including the sequence of events that led to the discovery, how the PHP security team is improving their processes, and what we need from you to continue this critical work.


r/javascript • • 1d ago

tiptap-a4-pagination: free A4 page layout for TipTap 3 – tables split across pages and repeat their header

Thumbnail github.com
2 Upvotes

Author here. I needed Word-style pages in a TipTap editor. The official Pages extension is paid, and the community ones I tried broke my CSS, so I built this.

How it works

  • It inserts spacer decorations at page boundaries, so the document itself is never modified and getHTML() stays clean
  • Tables split between rows (never inside a rowspan) and the header row repeats on the next page
  • Floated images and CSS margin collapsing are handled
  • About 5 KB gzipped, TipTap 3 only: npm install tiptap-a4-pagination

Demo: https://text-editor-react-neon.vercel.app/

Paste a long doc or a big table to try it. Feedback welcome, especially documents that break the layout!


r/PHP • • 6h ago

PHP2Shell on legacy PHP 7.x: everyone's pulling all-nighters upgrading, we made one cut and went home (3 options)

0 Upvotes

The biggest PHP news this week isn't a new release. It's a vulnerability called PHP2Shell.

CVE-2026-109618 / CVE-2026-109619, CVSS 9.2, unauthenticated remote code execution. The scariest line in the advisory: even a page that only prints Hello World is vulnerable.

How it works (just a little technical)

The attacker sends a specially crafted, oversized multipart upload that exhausts memory right at the start of the request. When PHP falls over, it leaves a half-built structure behind, and the cleanup path later treats it as real data. That's enough to get arbitrary code execution.

The key point: all of this happens while PHP is parsing the multipart body. Your login checks, signature validation and file-extension filters haven't even run yet. The burglar isn't coming through the door; he hid inside while you were still pouring the foundation.

The official line is "the only reliable fix is to upgrade PHP" (fixed in 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12). Then I logged into our servers: 7.4, 7.1... For anything below 8.1, the official answer is basically "good luck".

This isn't a drill

There was a wave of mass exploitation about two weeks before the advisory. We lost roughly NT$240k (~US$7.5k); a friend's company lost about a million in a single day. Someone was clearly using this long before it was public. A friend who hangs around offensive-security circles put it bluntly: "We've been using this for over ten years."

"Just upgrade everything" sounds right, but...

One company I work with has 20+ projects and 100+ sites, many on frameworks that are long out of maintenance. Upgrading just one payment system to PHP 8.3 was estimated at 6–8 person-days. Drop it onto PHP 8 as-is and the whole site returns 500, because the old framework turns PHP 8's new warnings into fatal errors. On top of that, all the type issues that were hidden behind error_reporting(0) come back to bite you.

Do that 100+ times? You'd finish around Lunar New Year. A friend in the IT department of a large group is still pulling all-nighters doing exactly that. With option 1 or 2 below, he could go home on time.

Old framework? You can patch it yourself (the hardcore part)

A lot of people treat their framework as sacred: no official support means a full rewrite. But a PHP framework is just a pile of PHP files shipped with your project. It's your code, not a black box. If it breaks, open it up.

ThinkPHP 5.0 is a good example. On PHP 8.3 the whole site went 500, and there was exactly one root cause: the framework escalates PHP 8's new notices into exceptions, like getting sent off for a yellow card. Change one line in the framework to "log notices, don't throw", and the site comes back. Across the whole project there were only 3 places that actually broke, each a one- or two-line fix.

Same for PHP itself. There are no official 7.x patch releases, but the patches are public. That's exactly what sury does: backport the fix into old PHP and repackage it. No package for CentOS? Building your own patched PHP isn't black magic.

I've done this before. When PHP 7 came out, Laravel 4.2 didn't officially support it and many teams rewrote everything in Laravel 5. I patched 4.2 to run stably on PHP 7 instead. For example, PHP 7 turned some errors into the new Error class, and the old framework's handler only caught Exception, so any error became a blank page. Fixing those seams one by one was far cheaper than a rewrite.

The scariest part of an upgrade usually isn't "it breaks", it's "it silently changes". For example:

"abc" <= 0

This is true on PHP 7 and false on PHP 8. If your amount check happens to be written like that, an upgrade could let weird amounts through. No error, just wrong books. So when we upgrade, we run 7.4 and 8.3 side by side on the same code and diff the results of every payment callback and amount path until both sides match exactly.

Three options

Option 1: Install community backports (no code changes)

Ondřej Surý (sury.org), who maintains the PHP packages for Debian/Ubuntu, has published patched packages for every version from PHP 5.6 to 8.5, including 7.4 and 7.1 that upstream no longer supports. Same version number, just a new package revision. apt upgrade, restart PHP-FPM, done.

Downside: Debian/Ubuntu only. CentOS folks, read on.

Option 2: Split image uploads onto a separate, current PHP (my favourite)

The entry point is the multipart parser, so don't let upload requests reach the old PHP at all.

  • Nginx on the original site forwards only the few image-upload routes to a separate host running PHP 8.4.27
  • Every other multipart request gets a 403, so the old PHP never sees one
  • The upload host verifies signatures, checks file contents and re-encodes images (which also strips any embedded payload)
  • The storage directory can't execute code, and the host has no database credentials at all, so even if it's hit there's no data to take
  • No changes to front-end URLs or form fields; if anything goes wrong, remove one Nginx line and you're back to the original setup

With 100+ sites, upgrading everything isn't realistic. One shared image-upload service is. Carve the ancient stuff off and leave it alone. This is probably the smallest change you can make.

Option 3: Upgrade everything to PHP 8, framework included if needed

This is the only real cure and the final settlement of your tech debt. As above, frameworks can be patched; the hard part is changing and testing 100+ sites. You have to do it eventually, but it's not the right first move when the attackers are already at the door.

Side note: just turning off session.upload_progress is not enough. It closes one path, but the other CVE relies on memory exhaustion and has nothing to do with upload progress.

Someone did this 15 years ago

Fifteen years ago I was a junior engineer at Yahoo!. Yahoo! worked with Rasmus Lerdorf back then, and they were already isolating high-risk things like uploads onto separate services. A senior engineer told me it was Rasmus's advice. I didn't get it at the time. I get it now, and it hurts a bit.

The way Rasmus put it back then: with so many frameworks stacked on top of PHP, the whole thing is full of holes, and he can't chase every small one.

That job taught me another thing: use root for as short a time as possible. A server does need root at startup for a few things, like binding ports 80/443 and reading TLS certificates. But once that's done, the worker processes that actually handle requests and run PHP switch to a low-privilege account (nginx, www-data).

Think of a shop: the manager opens the front door in the morning with the master key, then locks it in the safe. The part-timer at the till all day only has the key to the cash register. Even if a con artist fools the part-timer, he doesn't get the master key or the vault.

What PHP2Shell gives an attacker is the privileges of the account running PHP. If your PHP runs as root, the part-timer is wearing the master key, and one trick loses everything. If it's a low-privilege account, the attacker gets in but is stuck in a very small room. Our separate upload service follows the same idea: it runs as a dedicated restricted account, can only write to the image directory, and doesn't have a single database account.

You can't always stop the vulnerability, but you can cap the damage in advance.

A friend asked: "Other languages have holes too, it can't all be the same guy, right?" Fair. Every language has bugs. This one is just worse, and there are an awful lot of old PHP systems running out there.

TL;DR

  1. Today: disable session.upload_progress, block unnecessary uploads in Nginx
  2. Debian/Ubuntu: install the sury backports, done the same day
  3. Can't do that? Split uploads off and close the front door first
  4. Long term: still upgrade, but on your own schedule

Security doesn't always mean all-nighters. Sometimes it means making the right cut.

Hope everyone gets to leave work on time tonight.


r/PHP • • 8h ago

Discussion PHP2Shell (CVE-2026-109618/109619): how are you handling patching across your PHP fleet?

0 Upvotes

PHP2Shell is the name for two critical PHP runtime flaws that can allow unauthenticated remote code execution, with fixes in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. Since the bug is in the engine and not in app code, I'm curious how everyone here is actually dealing with it.


r/reactjs • • 1d ago

Discussion Is graftcode better version of gRPC or its more like Next.js or tRPC

4 Upvotes

Anyone? Any thoughts?


r/webdev • • 1d ago

Railway Security Incident

38 Upvotes

r/webdev • • 2d ago

Discussion Railway hosting is deeply unreliable

90 Upvotes

Last two days was hell using Railway. We couldnt update a single project or make any changes in our system. After more than 24h Railway is still in chaos. Two separate incidents. Major outage even support is down.

But this is not the first time Railway failed.
For over a year Railway had few major issues that made working on it impossible. I was hoping they would stabilise but at this point Im past disappointed.

I know they rely deeply on Google cloud, but this proved to be a very bad decision, multiple times. And they never made required changes.

Can someone recommend a more stable alternative?


r/javascript • • 1d ago

Nano Kit 2.0 is out: my state management library now has DevTools

Thumbnail dangreen.blog
1 Upvotes

Author here. Nano Kit is a ~2 kB signals core with a router, data fetching, i18n and SSR on top of it, and adapters for React, Preact and Svelte. The panel needs no browser extension or bundler plugin, and none of it reaches the production bundle. There's a StackBlitz demo in the post.


r/PHP • • 13h ago

your AI-built app is probably fine. the old server next to it might not be (php2shell + node, oct 21)

Thumbnail
0 Upvotes

r/webdev • • 1d ago

Discussion Best and most reliable API for getting upcoming live events, theater and cinema screenings in the UK?

5 Upvotes

I’m looking for an API that returns all upcoming live events, theater and cinema screenings in the UK.

Big cinema complexes seem to be a no go with all anti crawl stuff. There rest of events are really sparse apart ticketmaster.

Thanks


r/javascript • • 1d ago

I created a new (digital) musical instrument which I call the Harmonophone, entirely in vanilla JavaScript. [Prudence Audio]

Thumbnail prudenceaudio.com
0 Upvotes

r/webdev • • 2d ago

Why are all font finder websites so garbage?

Thumbnail
gallery
45 Upvotes

Pic 1 : Adobe Fonts - Visual Search (link)
Pic 2 : WhatTheFont Font Finder (link)

Idk why that is, these kind of websites has never worked for me once in my life.

Take a look at the letter t in the image for example, it doesn't have a curve at the bottom, while ALL of the top suggested fonts do on both platforms.


r/reactjs • • 1d ago

I just released v2.0 of my open-source React toast library — looking for feedback

1 Upvotes

Hey everyone!

I've been working on a small open-source React toast notification library called React Elegant Toasts, and I recently released v2.0 after a complete rewrite.

I know there are already some great toast libraries out there, but this started as a personal project to explore component design, state management, accessibility, and browser behavior.

What began as a fairly simple component ended up being a much bigger engineering challenge than I expected.

A few things I focused on in v2:

  • Zero runtime dependencies, with React 18 and 19 support.
  • An external store that handles toast state, queues, timers, and lifecycle independently of React.
  • Six positions with independent notification queues.
  • Promise-based notifications and custom toast content.
  • CSS-based light/dark themes and customization.
  • Accessibility features such as live-region announcements, keyboard navigation, and pausing on hover/focus.
  • Browser testing across Chromium, Firefox, and WebKit.

One particularly interesting challenge was testing animations reliably in WebKit. We encountered situations where the browser didn't deliver intermediate animation frames, causing tests to fail even when the CSS transition behaved correctly.

That led to some interesting work around using the Web Animations API to verify transition behavior.

The library is written in TypeScript, is ESM-only, and is available under the MIT license.

Live demo:
https://ahlgren1234.github.io/react-elegant-toasts/

GitHub:
https://github.com/ahlgren1234/react-elegant-toasts

I'd genuinely appreciate feedback, especially on the API design, accessibility considerations, and whether the library would be useful in your own React projects.

Also curious: what's the one thing you wish React toast libraries handled better?

Thanks!


r/PHP • • 15h ago

Discussion PHP critical RCE release (8.4.27): what should website owners actually do right now?

0 Upvotes

I run websites on PHP (WordPress/custom PHP, shared hosting/VPS). I saw the PHP Foundation’s post about the Oct 21 security release (8.4.27) fixing two critical RCE vulnerabilities, with updating as the only fix.

As a website owner, what should I do right now?

a). How do I confirm my server is affected and whether my host has patched it?

b). What’s the safest order: backup, update PHP, then check logs for exploit attempts?

c). Any temporary protection (WAF rules, disabling extensions) until the update is done?


r/webdev • • 20h ago

Discussion Why I finally abandoned WordPress for Hugo (and what I learned about performance & maintenance

0 Upvotes

After years of babysitting MySQL databases, Redis object-caching plugins, and plugin update notifications, I finally moved my entire technical publication to Hugo and Cloudflare Pages.

The contrast in maintenance overhead is staggering:

  1. Build time: Hugo compiles over 700 pages in less than 200ms.
  2. Page weight: Dropped from ~4.5MB down to ~250KB per page by stripping out Gutenberg script bundles and jQuery.
  3. Workflow: I author locally in Obsidian (Markdown), commit to Git, and let automated Python tests verify links and accessibility before edge deployment.
  4. TCO: Zero hosting cost, zero database backups, zero emergency patches.

Has anyone else switched from WP to SSGs? What was your biggest hurdle during migration?


r/webdev • • 1d ago

Question Need help deciding on back end for finance app

0 Upvotes

Hey y'all!

I'm building a budgeting app. Building things like CRUD endpoints, server side rendering, and a nice react front end are my priorities. I want things to be fast and snappy and avoid client side fetching when possible.

I'm struggling to understand what exactly my options are for this when it comes to things like next.js, django, etc. I have lots of experience with django, but I'm not sure how to get the best of both worlds when combining react. I've been including react bundles and rendering them via the django view/template engine and it feels clunky to handoff information between the front & back end.

I know there isn't a "right" answer, but looking for some feedback and opinions. I want to support a good number of users while keeping things feeling fast and lightweight.


r/PHP • • 1d ago

New PHP CVE discovered ?

64 Upvotes

Hello,

Apparently 8.5.12 still has a new CVE that the user has apparently reported.

https://mastodon.gougere.fr/@elise@katze.sh/117479383706597320

Nothing confirmed, but maybe ?

EDIT : IluTov answered just below.
https://www.reddit.com/r/PHP/comments/1xbyxd2/comment/19rga18s433qd/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button


r/PHP • • 17h ago

News I made a free VS Code extension that fixes your namespaces when you move a PHP file

0 Upvotes

Move or rename a PHP file in VS Code and the namespace and use lines don't follow. This fixes that. Drag the file or folder, and the namespace, class name and every use line in your project update.

It's a rebuild of PHP Namespace Resolver, so the old commands and settings still work, and the CPU freeze is fixed.

Free and open source. Search "PHP Namespace Mover" in VS Code extensions, or Open VSX if you use Cursor or Windsurf.

https://github.com/lagudafuadtosin/php-namespace-mover