| Curated news all about PHP. Here's the latest edition |
|
|
September 3rd 2026 |
|
Hi everyone,
The seasons are changing and along with it are also changes in the php community. Roman Pronskiy has left the PHP Foundation, and Brent Roose from JetBrains has now joined the board of directors. All new updates have been released for php 8.5, as well as the new beta release for php 8.6. You can read up on all of those in the News section. In Tutorials this week we also have new episodes from No Compromises and they discuss why writing clear requirements is one of the most valuable things a business can do before development starts. Matt Stauffer is joined by two of his oldest friends in the community — Michael Dyrynda and Jake Bennett on the Laravel Podcast, while Ian and Aaron discuss the release of Solo v0.10 and other topics on Mostly Technical. Finally the State of Laravel 2026 Survey, along with the last call for the State of PHP Survey, so take the time to fill them out and let your voices be heard.
We have all that and more, so we do hope you enjoy this week's newsletter. If you have an article, tutorial or podcast that you would like to be featured in our newsletter, feel free to reach out to us at articles@phpweekly.com.
All the best,
Adrian
|
Please help us by clicking to our sponsors:
Give Your Unused Startup a Second Chance
List your unfinished SaaS, app, or project for free. Sell it, find a co-founder, or let someone else bring it to life. No fees, no hassle - just new opportunities!
|
Articles
State of Laravel 2026 Survey Is Now Open
Tobias Petry has opened the State of Laravel 2026 survey, the sixth year of his annual look at what Laravel developers actually use.
Last Call for the State of PHP Survey
The State of PHP survey is still open, but not for much longer. It asks how PHP is working for you: what you build with, what is painful, and what you think PHP should focus on next. It takes around 15 minutes.
Rewritten in PHP
The application was “rewritten in Rust” meme runs one direction. Or it also goes to Go, just because it is fun. Here’s the traffic going the other way, and why it’s less silly than it sounds.
Sensitive Data in Your Logs: What Laravel 13.27's Binding Masking Fixes (and What It Doesn't)
When a query fails, Laravel builds a QueryException whose message contains the SQL with every bound value interpolated into it.
The Laravel schema nobody chose
Fifteen real Laravel applications, every one of them a codebase you can go and read. 811 tables. One pinned MySQL 8.0 database, migrations only, no seed data. Every application installed from a clean clone and migrated before a single table was read.
|
Tutorials and Talks
The Webhook Bug That Gives Cancelled Users Free Access
A client pays for a subscription, then seconds later they decide to cancel it. Your payment provider sends two webhooks: "payment successful" then "subscription cancelled". However, your server receives the webhooks in the opposite order, giving free unpaid access to the user.
Bulletproof APIs: Implementing Idempotency in Laravel
In distributed enterprise systems, network reliability is a myth. A user on a spotty mobile connection taps the "Submit Payment" button on your SaaS platform.
How a Timeout Can Charge Your Customer Twice (And How to Stop It in Laravel)
A customer attempts a payment. The request safely reaches your server, and the transaction is performed successfully. Then, while the response is being sent back to the client, the connection drops. The client never receives a success message. Instead, they see a timeout.
Laravel & Design Patterns — Practice Series: Adapter
Welcome back. This is the next article in our practical use of patterns in Laravel, and in this guide, we are going to talk about one of the most popular patterns that is used by many developers — the Adapter pattern.
How to Build a Custom-Coded WordPress Site (Custom Theme + Import)
Building a custom-coded WordPress site means designing your site as hand-written HTML, CSS, and JavaScript, then converting that design into a real WordPress theme, so you get a pixel-perfect, fast, fully portable site without a page builder in sight.
Converting a Lead Into a Customer in PHP Without Creating Duplicate Records
A practical PHP and MySQL pattern for checking existing customers before inserting another record.
Containerized Full-Stack Application using Docker, Nuxt 4, and Symfony 7.4
To run a multi-container full-stack application, the best practice is to separate your frontend and backend into isolated containers and orchestrate them using Docker Compose.
How to Scale PHP Applications Without Maxing Out PHP-FPM Pools
PHP runs a massive percentage of web applications and APIs, from custom frameworks to large Laravel and Symfony monoliths. Modern PHP 8.x with JIT and OPcache executes code quickly, but production servers still struggle during sudden traffic surges.
Benchmarking Filament Admin Screens Without Guessing
Slow Filament screens are usually blamed on the wrong layer. Teams upgrade packages, swap columns, or remove filters before they know whether the real cost is database work, Livewire hydration, authorization checks, or table configuration.
Postgres RLS in Symfony: with one tenant in the fixture, your isolation suite passes with no policy at all
Ten days ago I wrote that the Postgres role which runs your migrations bypasses every row-level security policy you wrote. Mads Hansen replied with the obvious next step, and it was better than the article: run the same cross-tenant query suite twice, once as the serving role and once as the owner role, and compare. |
News and Announcements
Query Binding Masking and whereBinary() in Laravel 13.27
Laravel 13.27 adds a per-connection option that keeps query bindings out of exception messages, a whereBinary() family for byte-exact comparisons on MySQL and MariaDB, a refreshForUpdate() method that reloads an Eloquent model under a pessimistic lock, and more.
PHP 8.5.10 & PHP 8.4.25 Released!
The PHP development team announces the immediate availability of PHP 8.5.10 & PHP 8.4.25. This is a bug fix release.
PHP 8.6.0 Beta 2 available for testing
The PHP team is pleased to announce a new beta release of PHP 8.6.0, Beta 2. This continues the PHP 8.6 release cycle, the rough outline of which is specified in the PHP Wiki.
Symfony 8.1.6, Symfony 8.1.6, & Symfony 6.4.45 Released
Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your project.
August 24–30, 2026 - A Week of Symfony #1026
This week, Symfony development activity focused mostly on bug fixes, while the community celebrated a busy first week for Symfony Language Tools and the release of Symfony Reprise 1.0.0.
Join Us for The PHP Foundation Community Hour
Here at The PHP Foundation, we are continuously looking for ways in which we can increase our connections with the PHP community, especially when the goal is to improve the sustainability of the PHP language.
Roman Pronskiy Leaves The PHP Foundation Board and Brent Roose Joins
The PHP Foundation is excited to announce the addition of Brent Roose from JetBrains to the Foundation's Board of Directors. Brent fills the JetBrains Platinum Sponsor seat and was unanimously voted to join by the existing members.
This Week In PHP Internals | August 26, 2026
For the second week running, no PHP RFC is in the voting phase — so the internals list spent the week on a question that isn't about PHP at all: who is actually writing the mail. Plus a new array function nobody wanted, a documentation argument that turned out to be about something else, and post-quantum crypto arriving as somebody's first pull request.
|
Podcasts and Vlogs
Laravel News: Paused queues, test doubles, and migrating files
Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community.
The Stack Overflow: The good ol’ days of building Java
Ryan sits down with Tim Lindholm, an early contributor to the Java language at Sun Microsystems, to chat about what it was like building one of the most popular programming languages ever at its inception, why it was strategically important for the Java team to create a cross-platform ABI to compete with Windows NT, and how applets were initially just an interesting demo.
No Compromises Podcast: Write better requirements or pay for it later
In the latest episode of the No Compromises podcast, we discuss why writing clear requirements is one of the most valuable things a business can do before development starts.
Maintainable Podcast: Kristin Isaac: The Customer Doesn’t Care About Your Technical Debt
Technical debt rarely arrives in a support ticket labeled “technical debt.” Customers experience something simpler: the product is slow, unreliable, or the same problem keeps coming back. Kristin Isaac, Co-Founder and CEO of Strudel, joins Robby to look at software maintainability from the customer and product side of the organization.
Software Engineering Radio: SE Radio 735: Vivek Yadav on Regression Testing Microservices
Vivek Yadav, an engineering manager at the payment company Stripe, speaks with host Adi Narayan about building regression testing for microservices.
Shoptalk Show: 730: A/B Testing with Charts, Music Recommendations, & Web Permissions
The realities of A/B testing, the future of specialized hosting in the AI era, microphone and camera permissions on the web, tricks for working with HTML email, and hyping Midnight Vinyl Club and How Many Dudes?
WP Builds: 482 – WPOCC: Rebranding, and surveying the WordPress community
The conversation focused on the rebranding of the WP Community Collective to the WP Open Community Collective (WPOCC) to avoid trademark conflicts and better reflect its broader open source focus.
Laravel Podcast: A Laravel and Laracon Catch-Up With Michael Dyrynda and Jake Bennett
In this episode, Matt Stauffer is joined by two of his oldest friends in the community — Michael Dyrynda and Jake Bennett, co-hosts of the Laravel News Podcast — for a Laracon-fueled catch-up that starts with golf, soccer, and adult swim lessons before turning to the framework.
PHP Architect: The PHP Podcast 2026.08.27
Zero-downtime swaps that nobody noticed, 3D printers that refuse to calibrate, a nostalgia tour through the entire PHPArch back catalog, Go generics, TypePHP, and a very good reason to book a flight to Belgium. This one lived in the gutter and loved it.
Mostly Technical: 147: It's Orbin' Time
Ian and Aaron discuss the release of Solo v0.10, Aaron's trip to Boise, Ian's trip to the fair, why Ian's all in on Orbs, and so much more.
Syntax: Omarchy Quattro Release
Grokbot actually earns its keep, Cursor takes a swing at GitHub with Origin, and Omarchy Quattro ships pre-wired for nine coding agents.
The Changelog: Postgres at PlanetScale
Sam Lambert is back after 4 years and he does not hold back! We cover $5 PlanetScale Postgres, the Neki “do-over” of Vitess, agents shipping schema changes through deploy requests, rolling back a 500TB table in seconds, and the very real question of whether to open source any of it. Plus: why he thinks the sleeping, lazy giants should be broken up.
|
|
Never run Puppeteer inside a web request: scheduled captures with WP-Cron + a background worker
We let people put a URL on a schedule: re-capture this page daily, weekly, or monthly, and email me only when it actually changes. Simple feature, one sharp edge — and we found it in production.
A Credential Rotation Without an Overlap Is Just an Outage You Scheduled
I shipped managed S3-compatible storage servers today, and the most interesting thing in the whole feature wasn't the provisioning pipeline. It was discovering that the storage daemon has no "rotate key" command — and that this absence is a better design than the setPassword() I'd already written for databases.
Distributed Background Processing: Scaling Temporal Workflows with Laravel
Laravel's queue system is excellent. Redis-backed queues and supervisors can handle millions of standard jobs efficiently. However, when background processing evolves into complex, multi-day, retry-sensitive state machines, standard queues begin to show limits.
My captcha never protected against spam, only against laziness
Back in March, a bot named RobertqueRy spammed a post about gRPC with an ad for online gambling in Bangladesh.
Mastering Zero-Downtime Deployments with Laravel Deployer
How I achieved zero-downtime deployments using PHP Deployer for my Laravel app, and the critical caching and Horizon worker issues I had to solve.
|
Interesting Projects, Tools and Libraries
struggle-for-php/sfp-phpstan-psr-log
Extra strict and opinionated psr/log (psr-3) rules for PHPStan.
freshbitsweb/laratables
Ajax support of DataTables for Laravel.
symfony/brevo-notifier
Symfony Brevo Notifier Bridge.
codewithkyrian/chromadb-php
A PHP client for the Chroma Open Source Embedding Database.
vanilla/garden-cli
A full-featured, yet ridiculously simple commandline parser for your next php cli script. Stop fighting with getopt().
graphp/algorithms
Common mathematical graph algorithms implemented in PHP.
aimeos/laravel-nestedset
Nested Set Model for Laravel.
pear/spreadsheet_excel_writer
Allows writing of Excel spreadsheets without the need for COM objects. Supports formulas, images (BMP) and all kinds of formatting for text and cells.
danog/primemodule
Prime module capable of doing prime factorization of huge numbers very quickly."
odan/tsid
A library for generating Time Sortable Identifiers (TSID).
|
Jobs
------
Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $75/week for an advert. Please let me know if you are interested by emailing me at articles@phpweekly.com |
Please help us by clicking to our sponsor:
Protect your PHP Code
Why not try SourceGuardian 17. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders. |
So, how did you like this issue?
|
|
|
|
|
|