SymfonyLive Paris 2026: Chiffrez vos données avec Doctrine, en restant recherchable
https://symfony.com/blog/symfonylive-paris-2026-chiffrez-vos-donnees-avec-doctrine-en-restant-recherchable?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1q88sn2
@r_php
https://symfony.com/blog/symfonylive-paris-2026-chiffrez-vos-donnees-avec-doctrine-en-restant-recherchable?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1q88sn2
@r_php
Symfony
SymfonyLive Paris 2026: Chiffrez vos données avec Doctrine, en restant recherchable (Symfony Blog)
🔐 Comment sécuriser des données sensibles sans perdre la capacité de les interroger ? À SymfonyLive Paris 2026, Jérôme Tamarelle présente “Chiffrez vos données avec Doctrine, en restant …
Disable Zero Downtime Deployments in Forge?
Hello All!
Is the only way to disable the new Zero Downtime Deployments in forge to delete the site + re-create? That seems like a big pain in the neck.
I want to test Laravel Octane so I need to disable ZDD and it seems like it can only be configured on site creation??
https://redd.it/1q8c1qz
@r_php
Hello All!
Is the only way to disable the new Zero Downtime Deployments in forge to delete the site + re-create? That seems like a big pain in the neck.
I want to test Laravel Octane so I need to disable ZDD and it seems like it can only be configured on site creation??
https://redd.it/1q8c1qz
@r_php
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
How are you handling massive build matrices?
I’ve run into a bit of a scaling wall with php-ext-farm and I’m curious how others manage massive build pipelines.
Currently, the build matrix is exploding. I'm building:
160 Base Images: (5 PHP Versions × 8 OS flavors/versions × 4 Platforms)
33,920 Extension Images: (106 Extensions × 2 Versions × 160 Base Images)
As you can imagine, the time to finish a full run is becoming unbearable.
For those of you managing large-scale build combinations, how do you handle/improve this (without going bankrupt) when you need to support multiple versions across different architectures?
https://redd.it/1q8mwzb
@r_php
I’ve run into a bit of a scaling wall with php-ext-farm and I’m curious how others manage massive build pipelines.
Currently, the build matrix is exploding. I'm building:
160 Base Images: (5 PHP Versions × 8 OS flavors/versions × 4 Platforms)
33,920 Extension Images: (106 Extensions × 2 Versions × 160 Base Images)
As you can imagine, the time to finish a full run is becoming unbearable.
For those of you managing large-scale build combinations, how do you handle/improve this (without going bankrupt) when you need to support multiple versions across different architectures?
https://redd.it/1q8mwzb
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
The 1MB Password: Crashing Backends via Hashing Exhaustion
https://instatunnel.my/blog/the-1mb-password-crashing-backends-via-hashing-exhaustion
https://redd.it/1q8vtsz
@r_php
https://instatunnel.my/blog/the-1mb-password-crashing-backends-via-hashing-exhaustion
https://redd.it/1q8vtsz
@r_php
InstaTunnel
The 1MB Password: How Hashing Exhaustion Crashes
Discover how oversized passwords exploit CPU-intensive hashing algorithms like bcrypt and Argon2 to cause denial of service. Learn why missing input limits
Developer Experience: Fluent Builder vs. DTO vs. Method Arguments ?
Hello everyone,
I'm currently building a library that fetches data from an (XML) API.
The API supports routes with up to 20 parameters.
Example:
Now I'm wondering for the "best" way to represent that in my library.
I'm trying to find the best compromise between testability, intuitivity and developer experience (for people using the library but also for me developing the library).
I came up with the following approaches:
## 1. Fluent Builder:
## 2. DTO:
With fluent builder:
With constructor arguments:
## 3. Method Arguments
Which approach would you choose (and why)?
Or do you have another idea?
View Poll
https://redd.it/1q922xx
@r_php
Hello everyone,
I'm currently building a library that fetches data from an (XML) API.
The API supports routes with up to 20 parameters.
Example:
/thing?id=1&type=game&own=1&played=1&rating=5&wishlist=0Now I'm wondering for the "best" way to represent that in my library.
I'm trying to find the best compromise between testability, intuitivity and developer experience (for people using the library but also for me developing the library).
I came up with the following approaches:
## 1. Fluent Builder:
$client->getThing()
->withId(1)
->withType("game")
->ownedOnly()
->playedOnly()
->withRating(5)
->wishlistedOnly()
->fetch();
## 2. DTO:
With fluent builder:
$thingQuery = (new ThingQuery())
->withId(1)
->withType("game")
->ownedOnly()
->playedOnly()
->withRating(5)
->wishlistedOnly();
$client->getThing($thingQuery)
With constructor arguments:
$thingQuery = new ThingQuery(
id: 1,
type: "game",
ownedOnly: true,
playedOnly: true,
rating: 5,
wishlistedOnly: true
);
$client->getThing($thingQuery)
## 3. Method Arguments
$client->getThing(
id: 1,
type: "game",
ownedOnly: true,
playedOnly: true,
rating: 5,
wishlistedOnly: true
);
Which approach would you choose (and why)?
Or do you have another idea?
View Poll
https://redd.it/1q922xx
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Latest Study: PHP 8.5 beats C# AOT, Go and C++
https://github.com/AutonomoDev/programming-language-efficiency-research
https://redd.it/1q9dwf0
@r_php
https://github.com/AutonomoDev/programming-language-efficiency-research
https://redd.it/1q9dwf0
@r_php
GitHub
GitHub - AutonomoDev/programming-language-efficiency-research: A survey of 18 programming languages' efficiencies.
A survey of 18 programming languages' efficiencies. - AutonomoDev/programming-language-efficiency-research
Demystifying Docker Part 2: Containerising Laravel Octane & FrankenPHP (featuring Whippets & Yorkshire Tea)
https://clegginabox.co.uk/demystifying-docker-part-2/
https://redd.it/1q9j9rs
@r_php
https://clegginabox.co.uk/demystifying-docker-part-2/
https://redd.it/1q9j9rs
@r_php
Clegginabox
Demystifying Docker - Part 2
In this article I'm going to walk through containerising a Laravel application. Along the way I'll cover some of the terminology you'll hear around Docker, some of the console commands and Dockerfile syntax.
First up, creating a new Laravel project:
$ docker…
First up, creating a new Laravel project:
$ docker…
Demystifying Docker Part 2: Containerising Laravel Octane & FrankenPHP (featuring Whippets & Yorkshire Tea)
https://clegginabox.co.uk/demystifying-docker-part-2/
https://redd.it/1q9j6t8
@r_php
https://clegginabox.co.uk/demystifying-docker-part-2/
https://redd.it/1q9j6t8
@r_php
Clegginabox
Demystifying Docker - Part 2
In this article I'm going to walk through containerising a Laravel application. Along the way I'll cover some of the terminology you'll hear around Docker, some of the console commands and Dockerfile syntax.
First up, creating a new Laravel project:
$ docker…
First up, creating a new Laravel project:
$ docker…
Announcing Kreuzberg v4
Hi Peeps,
I'm excited to announce Kreuzberg v4.0.0.
## What is Kreuzberg:
Kreuzberg is a document intelligence library that extracts structured data from 56+ formats, including PDFs, Office docs, HTML, emails, images and many more. Built for RAG/LLM pipelines with OCR, semantic chunking, embeddings, and metadata extraction.
The new v4 is a ground-up rewrite in Rust with a bindings for 9 other languages!
## What changed:
- Rust core: Significantly faster extraction and lower memory usage. No more Python GIL bottlenecks.
- Pandoc is gone: Native Rust parsers for all formats. One less system dependency to manage.
- 10 language bindings: Python, TypeScript/Node.js, Java, Go, C#, Ruby, PHP, Elixir, Rust, and WASM for browsers. Same API, same behavior, pick your stack.
- Plugin system: Register custom document extractors, swap OCR backends (Tesseract, EasyOCR, PaddleOCR), add post-processors for cleaning/normalization, and hook in validators for content verification.
- Production-ready: REST API, MCP server, Docker images, async-first throughout.
- ML pipeline features: ONNX embeddings on CPU (requires ONNX Runtime 1.22.x), streaming parsers for large docs, batch processing, byte-accurate offsets for chunking.
## Why polyglot matters:
Document processing shouldn't force your language choice. Your Python ML pipeline, Go microservice, and TypeScript frontend can all use the same extraction engine with identical results. The Rust core is the single source of truth; bindings are thin wrappers that expose idiomatic APIs for each language.
## Why the Rust rewrite:
The Python implementation hit a ceiling, and it also prevented us from offering the library in other languages. Rust gives us predictable performance, lower memory, and a clean path to multi-language support through FFI.
## Is Kreuzberg Open-Source?:
Yes! Kreuzberg is MIT-licensed and will stay that way.
## Links
- Star us on GitHub
- Read the Docs
- Join our Discord Server
https://redd.it/1q9stan
@r_php
Hi Peeps,
I'm excited to announce Kreuzberg v4.0.0.
## What is Kreuzberg:
Kreuzberg is a document intelligence library that extracts structured data from 56+ formats, including PDFs, Office docs, HTML, emails, images and many more. Built for RAG/LLM pipelines with OCR, semantic chunking, embeddings, and metadata extraction.
The new v4 is a ground-up rewrite in Rust with a bindings for 9 other languages!
## What changed:
- Rust core: Significantly faster extraction and lower memory usage. No more Python GIL bottlenecks.
- Pandoc is gone: Native Rust parsers for all formats. One less system dependency to manage.
- 10 language bindings: Python, TypeScript/Node.js, Java, Go, C#, Ruby, PHP, Elixir, Rust, and WASM for browsers. Same API, same behavior, pick your stack.
- Plugin system: Register custom document extractors, swap OCR backends (Tesseract, EasyOCR, PaddleOCR), add post-processors for cleaning/normalization, and hook in validators for content verification.
- Production-ready: REST API, MCP server, Docker images, async-first throughout.
- ML pipeline features: ONNX embeddings on CPU (requires ONNX Runtime 1.22.x), streaming parsers for large docs, batch processing, byte-accurate offsets for chunking.
## Why polyglot matters:
Document processing shouldn't force your language choice. Your Python ML pipeline, Go microservice, and TypeScript frontend can all use the same extraction engine with identical results. The Rust core is the single source of truth; bindings are thin wrappers that expose idiomatic APIs for each language.
## Why the Rust rewrite:
The Python implementation hit a ceiling, and it also prevented us from offering the library in other languages. Rust gives us predictable performance, lower memory, and a clean path to multi-language support through FFI.
## Is Kreuzberg Open-Source?:
Yes! Kreuzberg is MIT-licensed and will stay that way.
## Links
- Star us on GitHub
- Read the Docs
- Join our Discord Server
https://redd.it/1q9stan
@r_php
GitHub
GitHub - kreuzberg-dev/kreuzberg: A polyglot document intelligence framework with a Rust core. Extract text, metadata, and structured…
A polyglot document intelligence framework with a Rust core. Extract text, metadata, and structured information from PDFs, Office documents, images, and 76+ formats. Available for Rust, Python, Rub...
I built a tool to cure "Dependency Anxiety" using Laravel Octane & FrankenPHP (Architecture breakdown inside)
https://danielpetrica.com/how-i-built-a-high-performance-directory-with-laravel-octane-and-filament/
https://redd.it/1q9y2wd
@r_php
https://danielpetrica.com/how-i-built-a-high-performance-directory-with-laravel-octane-and-filament/
https://redd.it/1q9y2wd
@r_php
Daniel Petrica
I built Laraplugins.io to cure your "Dependency Anxiety" 💊
Stop wasting time vetting packages. I built Laraplugins.io to automate Laravel plugin health checks & protect your stack
Generating PDF contracts in Laravel: DomPDF vs Spatie/Browsershot?
I’m building a small app in Laravel to generate and sign contracts.
For the PDF version of those contracts I’ve always used barryvdh/laravel-dompdf and it’s been “good enough”.
Lately I’m seeing more people using Spatie’s Browsershot / laravel-pdf for PDFs.
For a contracts use case (multi-page, decent layout, mostly text with some branding), would you stick to DomPDF or move to Browsershot?
Any real-world pros/cons in terms of CSS support, performance or server setup that I should consider?
https://redd.it/1qa6hgh
@r_php
I’m building a small app in Laravel to generate and sign contracts.
For the PDF version of those contracts I’ve always used barryvdh/laravel-dompdf and it’s been “good enough”.
Lately I’m seeing more people using Spatie’s Browsershot / laravel-pdf for PDFs.
For a contracts use case (multi-page, decent layout, mostly text with some branding), would you stick to DomPDF or move to Browsershot?
Any real-world pros/cons in terms of CSS support, performance or server setup that I should consider?
https://redd.it/1qa6hgh
@r_php
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
A Week of Symfony #993 (January 5–11, 2026)
https://symfony.com/blog/a-week-of-symfony-993-january-5-11-2026?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1q9vid2
@r_php
https://symfony.com/blog/a-week-of-symfony-993-january-5-11-2026?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1q9vid2
@r_php
Symfony
A Week of Symfony #993 (January 5–11, 2026) (Symfony Blog)
This week, Symfony development activity focused on fixing bugs and updating tests to make them compatible with the newest PHPUnit versions. Meanwhile, the upcoming Symfony 8.1 release started adding n…
My highlights of things for PHP to look forward to in 2026
https://stitcher.io/blog/php-2026
https://redd.it/1qatqzj
@r_php
https://stitcher.io/blog/php-2026
https://redd.it/1qatqzj
@r_php
stitcher.io
A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.
Why is something like PHP-FPM necessary in PHP, but not in other languages such as JS (nodejs) or Go lang?
I want to deploy my PHP website on my VPS and thought it would be simpler. I use NGINX as a reverse proxy, and if I want to connect it to PHP, it seems I need something like PHP-FPM, which has several configurations that overwhelm me.
I saw that PHP has a built-in server, but apparently it's only for development and is not recommended for production use. In other environments such as NodeJS or Golang, I don't see the need for another tool like php-fpm. Am I missing something? Maybe there's a simpler way without all the configuration hassle?
https://redd.it/1qagk8i
@r_php
I want to deploy my PHP website on my VPS and thought it would be simpler. I use NGINX as a reverse proxy, and if I want to connect it to PHP, it seems I need something like PHP-FPM, which has several configurations that overwhelm me.
I saw that PHP has a built-in server, but apparently it's only for development and is not recommended for production use. In other environments such as NodeJS or Golang, I don't see the need for another tool like php-fpm. Am I missing something? Maybe there's a simpler way without all the configuration hassle?
https://redd.it/1qagk8i
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
A slightly faster language server for php-cs-fixer
https://github.com/balthild/php-cs-fixer-lsp
It starts php-cs-fixer runners and keep them running in the background. This makes formatOnSave less laggy.
https://redd.it/1qb97qn
@r_php
https://github.com/balthild/php-cs-fixer-lsp
It starts php-cs-fixer runners and keep them running in the background. This makes formatOnSave less laggy.
https://redd.it/1qb97qn
@r_php
GitHub
GitHub - balthild/php-cs-fixer-lsp
Contribute to balthild/php-cs-fixer-lsp development by creating an account on GitHub.
How do you track temporary workarounds in Laravel projects?
In large Laravel applications, temporary workarounds often turn into permanent technical debt if they aren’t tracked carefully.
One approach is to **mark workarounds with a denoscription and an expiration date using PHP attributes**. With this system, teams can:
* List all workarounds and their current status (healthy or expired)
* Fail CI/CD builds when a workaround has expired
* Provide local feedback when expired code is executed (only in local environments)
Controller classes and methods can be automatically discovered, while other classes (services, jobs, listeners, etc.) can be explicitly enforced where needed.
This strategy helps teams enforce accountability and catch forgotten workarounds before they become problems.
For anyone interested, there’s an open-source implementation here: [https://github.com/medmahmoudhdaya/laravel-deadlock](https://github.com/medmahmoudhdaya/laravel-deadlock)
https://redd.it/1qauky3
@r_php
In large Laravel applications, temporary workarounds often turn into permanent technical debt if they aren’t tracked carefully.
One approach is to **mark workarounds with a denoscription and an expiration date using PHP attributes**. With this system, teams can:
* List all workarounds and their current status (healthy or expired)
* Fail CI/CD builds when a workaround has expired
* Provide local feedback when expired code is executed (only in local environments)
Controller classes and methods can be automatically discovered, while other classes (services, jobs, listeners, etc.) can be explicitly enforced where needed.
This strategy helps teams enforce accountability and catch forgotten workarounds before they become problems.
For anyone interested, there’s an open-source implementation here: [https://github.com/medmahmoudhdaya/laravel-deadlock](https://github.com/medmahmoudhdaya/laravel-deadlock)
https://redd.it/1qauky3
@r_php
GitHub
GitHub - medmahmoudhdaya/laravel-deadlock
Contribute to medmahmoudhdaya/laravel-deadlock development by creating an account on GitHub.