QR Code SMS generation - different behavior on iPhone vs Android
Hi!
I'm generating QR codes for SMS messages in PHP, but I'm struggling with platform differences. I want to pre-fill only the message body, letting users choose their own recipient - but different platforms behave weirdly.
What I've Tested:
Format:
- ✅ iPhone: Perfect! Empty recipient, message pre-filled
- ❌ Android: Opens Notes app instead of SMS (wtf?)
Format:
- ✅ Android: Works perfectly
- ❌ iPhone: Shows annoying "Add to Contact" popup
Format:
- ✅ iPhone: Works well, but requires phone number
- ✅ Android: Also works, but requires phone number
My Current PHP Code:
My Goal:
Generate QR codes that open SMS app on both platforms with:
- ✅ Pre-filled message body
- ✅ Empty/no recipient (user adds their own)
- ✅ No "Add to Contact" popups
- ✅ No wrong apps opening (looking at you, Android Notes!)
Questions:
- Is there a universal format for SMS without phone number?
- Why does Android open Notes for
- Any workarounds or alternative approaches?
- Should I detect user agent and serve different QR codes?
Has anyone solved this cross-platform SMS QR puzzle? Any help appreciated! 🙏
Environment:
- PHP 7.4+
- QR libraries: phpqrcode or chillerlan/php-qrcode
- Target: iOS Safari & Android Chrome
https://redd.it/1lps6t9
@r_php
Hi!
I'm generating QR codes for SMS messages in PHP, but I'm struggling with platform differences. I want to pre-fill only the message body, letting users choose their own recipient - but different platforms behave weirdly.
What I've Tested:
Format:
sms:?body=message (no phone number)- ✅ iPhone: Perfect! Empty recipient, message pre-filled
- ❌ Android: Opens Notes app instead of SMS (wtf?)
Format:
sms:+48123456789?body=message (with number)- ✅ Android: Works perfectly
- ❌ iPhone: Shows annoying "Add to Contact" popup
Format:
SMSTO:+48123456789:message (with number)- ✅ iPhone: Works well, but requires phone number
- ✅ Android: Also works, but requires phone number
My Current PHP Code:
// What I want to achieve:
$qr_content = "sms:?body=" . urlencode($sms_body); // iPhone ✅, Android ❌
// What works but requires number:
$qr_content = "SMSTO:+48123456789:" . $sms_body; // Both ✅, but I don't want number
QRcode::png($qr_content, $filepath, "M", 8, 2);
My Goal:
Generate QR codes that open SMS app on both platforms with:
- ✅ Pre-filled message body
- ✅ Empty/no recipient (user adds their own)
- ✅ No "Add to Contact" popups
- ✅ No wrong apps opening (looking at you, Android Notes!)
Questions:
- Is there a universal format for SMS without phone number?
- Why does Android open Notes for
sms:?body=?- Any workarounds or alternative approaches?
- Should I detect user agent and serve different QR codes?
Has anyone solved this cross-platform SMS QR puzzle? Any help appreciated! 🙏
Environment:
- PHP 7.4+
- QR libraries: phpqrcode or chillerlan/php-qrcode
- Target: iOS Safari & Android Chrome
https://redd.it/1lps6t9
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Adding an `ignoreMissingBindings` method to Laravel routes
https://youtu.be/NecBFUJmov4
https://redd.it/1lpxrgd
@r_php
https://youtu.be/NecBFUJmov4
https://redd.it/1lpxrgd
@r_php
YouTube
Hacking the Laravel router
We dive into the Laravel core and hack together a feature I’ve always wanted, route bindings that gracefully fall through if a model isn’t found. Along the way, I show how to safely extend Laravel with macros and custom validators without breaking future…
Recreating Laravel Cloud’s range input with native HTML
https://phare.io/blog/recreating-laravel-clouds-range-input-with-native-html/
https://redd.it/1lq0fcq
@r_php
https://phare.io/blog/recreating-laravel-clouds-range-input-with-native-html/
https://redd.it/1lq0fcq
@r_php
Phare blog
Recreating Laravel Cloud’s range input with native HTML
Making a visually appealing range input based on Laravel Cloud's design, native HTML and only a few lines of JavaScript.
Memory usage issue (leaks) after upgrading Symfony 6.4 to 7.3
Hey! Has anyone experienced memory leak issues in recent Symfony versions? Upon upgrading directly from 6.4 to 7.3 I started noticing that the PHP-FPM pod/container grows memory usage indefinitely:
Growth rate: about 15\~20 MB/hour. Doesn't seem affected by usage: about the same rate at peak or idle hours.
Growth is approximately steady, no frequent "bumps"
Kubernetes, GKE
The metric I'm using is "container memory used" (
PHP 8.3, official Docker images, Debian Bookworm
The most relevant extension that I thought could interfere was ddtrace (DataDog Tracer), but disabling it (by removing
OPcache is enabled; checking its own metrics, memory usage is stable and doesn't grow indefinitely
Restarting PHP-FPM workers doesn't seem to recover enough memory; currently working with
Seems like a problem with FPM only or with the HTTP part of Symfony only - no memory issues for my queue consumers (custom implementation, not using Symfony Messenger)
I'm going to try downgrading to Symfony 7.2, 7.1, 7.0 and see if the issue persists
I also tried digging for other solutions with ChatGPT, which pointed me to possible lower-level issues, extensions leaking shared memory, but was hoping to find other people with the same issue,
https://redd.it/1lq8ixr
@r_php
Hey! Has anyone experienced memory leak issues in recent Symfony versions? Upon upgrading directly from 6.4 to 7.3 I started noticing that the PHP-FPM pod/container grows memory usage indefinitely:
Growth rate: about 15\~20 MB/hour. Doesn't seem affected by usage: about the same rate at peak or idle hours.
Growth is approximately steady, no frequent "bumps"
Kubernetes, GKE
The metric I'm using is "container memory used" (
container_memory_used_bytes)PHP 8.3, official Docker images, Debian Bookworm
The most relevant extension that I thought could interfere was ddtrace (DataDog Tracer), but disabling it (by removing
extension=ddtrace.so) caused no impact.OPcache is enabled; checking its own metrics, memory usage is stable and doesn't grow indefinitely
Restarting PHP-FPM workers doesn't seem to recover enough memory; currently working with
pm.max_requests = 200. Also tried manual restarts with kill -USR2 <master_pid>.Seems like a problem with FPM only or with the HTTP part of Symfony only - no memory issues for my queue consumers (custom implementation, not using Symfony Messenger)
I'm going to try downgrading to Symfony 7.2, 7.1, 7.0 and see if the issue persists
I also tried digging for other solutions with ChatGPT, which pointed me to possible lower-level issues, extensions leaking shared memory, but was hoping to find other people with the same issue,
https://redd.it/1lq8ixr
@r_php
Reddit
From the symfony community on Reddit
Explore this post and more from the symfony community
PHP Hate, but what about Java?
I'm a PHP'er since 20 years with some side steps to Node. Actually I started in 1998 when classis ASP and VB where still popular.
For fun I was reading into Spring/JAVA:
https://spring.io/guides/gs/accessing-data-mysql
I find the code it produces really, really ugly and unreadable. I see so much PHP hate, here on Reddit and from professional programmers (A lot do Java). But what is the core of that?
https://redd.it/1lqila8
@r_php
I'm a PHP'er since 20 years with some side steps to Node. Actually I started in 1998 when classis ASP and VB where still popular.
For fun I was reading into Spring/JAVA:
https://spring.io/guides/gs/accessing-data-mysql
I find the code it produces really, really ugly and unreadable. I see so much PHP hate, here on Reddit and from professional programmers (A lot do Java). But what is the core of that?
https://redd.it/1lqila8
@r_php
Getting Started | Accessing data with MySQL
Learn how to set up and manage user accounts on MySQL and how to configure Spring Boot to connect to it at runtime.
FrankenPHP - any reason why not?
I've been watching the PHPVerse 2025 FrankenPHP creator talk about all the great features (https://www.youtube.com/watch?v=k-UwH91XnAo). Looks great - much improved performance over native php-fpm, and lots of good stuff because it's built on top of Caddy. I'm just wondering if there are any reasons why not to use it in production?
Is it considered stable? Any issues to watch out for? I like the idea of running it in Docker, or creating a single binary - will the web server still support lots of concurrency with thread pools and the like or does all the processing still go through the same process bottleneck? I especially like the Octane (app boots once) support - sounds super tasty. Anyone have personal experience they can share?
https://redd.it/1lqpkfq
@r_php
I've been watching the PHPVerse 2025 FrankenPHP creator talk about all the great features (https://www.youtube.com/watch?v=k-UwH91XnAo). Looks great - much improved performance over native php-fpm, and lots of good stuff because it's built on top of Caddy. I'm just wondering if there are any reasons why not to use it in production?
Is it considered stable? Any issues to watch out for? I like the idea of running it in Docker, or creating a single binary - will the web server still support lots of concurrency with thread pools and the like or does all the processing still go through the same process bottleneck? I especially like the Octane (app boots once) support - sounds super tasty. Anyone have personal experience they can share?
https://redd.it/1lqpkfq
@r_php
YouTube
FrankenPHP: the future of PHP? // PHPverse 2025
FrankenPHP, a modern high-performance PHP application server, is now officially supported by the PHP Foundation.
FrankenPHP integrates PHP directly into Go and Caddy, simplifying deployment, improving performance, and reducing infrastructure costs. It powers…
FrankenPHP integrates PHP directly into Go and Caddy, simplifying deployment, improving performance, and reducing infrastructure costs. It powers…
Welcome the New Stream Hooks for React & Vue
https://youtu.be/mSssWRUkmXA
https://redd.it/1lqq3wh
@r_php
https://youtu.be/mSssWRUkmXA
https://redd.it/1lqq3wh
@r_php
YouTube
Welcome the New Stream Hooks for React & Vue
The useStream hook is a new feature in Laravel that provides a seamless way to handle streamed responses in both React and Vue applications.
➡️ https://laravel.com/docs/12.x/responses#consuming-streamed-responses
➡️ https://laravel.com/docs/12.x/responses#consuming-streamed-responses
Go Meets PHP: Enhancing Your PHP Applications with Go via FFI
https://chrastecky.dev/programming/go-meets-php-enhancing-your-php-applications-with-go-via-ffi
https://redd.it/1lqpzfh
@r_php
https://chrastecky.dev/programming/go-meets-php-enhancing-your-php-applications-with-go-via-ffi
https://redd.it/1lqpzfh
@r_php
Reddit
From the PHP community on Reddit: Go Meets PHP: Enhancing Your PHP Applications with Go via FFI
Explore this post and more from the PHP community
Self hosting Docker PHP setup for Laravel help
Been learning Laravel on and off for the past year. I haven’t built a production app yet, but I’ve been really interested in setting up a docker Compose setup to run Laravel on a VPS. I know there are hold are alternatives like Laravel Forge, Envy, Cloud, or Ploy.io or Server Avatar or Coolify or Vito Deploy, but I want to learn the hard way first.
Laravel is a breath of fresh air with its batteries-included approach, but I’ll be honest, it’s definitely not as straightforward to get running compared to what I’m used to with node and svelteKit. With those, I just build the app using a node docker image, copy it into the container, throw in a Caddy container, and it's good to go.
PHP, on the other hand, comes with a bunch of Linux dependencies and PHP-extensions etc etc, and it’s not always obvious which ones are needed.
To help myself learn, I created a small example repo with a dummy Laravel app and Docker setup. It runs the whole stack entirely in Docker, using separate containers for:
\- Postgres
\- Caddy
\- Horizon
\- Redis
\- (mailpit and adminer just for testing)
Anyone with experience, got advice?
Here is a link to the public repo I made to figure it out and learn alone the way:
Maxiviper117/example-laravel12-docker
welcome to post issues on it.
https://redd.it/1lqqe6b
@r_php
Been learning Laravel on and off for the past year. I haven’t built a production app yet, but I’ve been really interested in setting up a docker Compose setup to run Laravel on a VPS. I know there are hold are alternatives like Laravel Forge, Envy, Cloud, or Ploy.io or Server Avatar or Coolify or Vito Deploy, but I want to learn the hard way first.
Laravel is a breath of fresh air with its batteries-included approach, but I’ll be honest, it’s definitely not as straightforward to get running compared to what I’m used to with node and svelteKit. With those, I just build the app using a node docker image, copy it into the container, throw in a Caddy container, and it's good to go.
PHP, on the other hand, comes with a bunch of Linux dependencies and PHP-extensions etc etc, and it’s not always obvious which ones are needed.
To help myself learn, I created a small example repo with a dummy Laravel app and Docker setup. It runs the whole stack entirely in Docker, using separate containers for:
\- Postgres
\- Caddy
\- Horizon
\- Redis
\- (mailpit and adminer just for testing)
Anyone with experience, got advice?
Here is a link to the public repo I made to figure it out and learn alone the way:
Maxiviper117/example-laravel12-docker
welcome to post issues on it.
https://redd.it/1lqqe6b
@r_php
GitHub
GitHub - Maxiviper117/example-laravel12-docker
Contribute to Maxiviper117/example-laravel12-docker development by creating an account on GitHub.
The Different Sampling Options Laravel Nightwatch Has
https://youtu.be/aN5Dw4F8t_U
https://redd.it/1lqvwrj
@r_php
https://youtu.be/aN5Dw4F8t_U
https://redd.it/1lqvwrj
@r_php
YouTube
Do This to Stop Running Out of Events in Nightwatch
Did you hit the quota on your Nightwatch events that came with the plan you're on? Well, how do you stop that from happening every month?
The biggest way is learning what Laravel Nightwatch provides when it comes to SAMPLING.
➡ Nightwatch Sampling Docs:…
The biggest way is learning what Laravel Nightwatch provides when it comes to SAMPLING.
➡ Nightwatch Sampling Docs:…
PHP 8.5 is getting a new pipe operator, I'm confident many Laravel devs will love it!
https://www.youtube.com/watch?v=0gSvLttEQas
https://redd.it/1lrbda7
@r_php
https://www.youtube.com/watch?v=0gSvLttEQas
https://redd.it/1lrbda7
@r_php
YouTube
The pipe operator in PHP 8.5
Join the Tempest Discord! https://tempestphp.com/discord
Let's take a look at PHP 8.5's new pipe operator!
#php #webdev #oss
Let's take a look at PHP 8.5's new pipe operator!
#php #webdev #oss
Case study: Modernizing Audi France’s Digital Ecosystem with Symfony 6
https://symfony.com/blog/case-study-modernizing-audi-france-s-digital-ecosystem-with-symfony-6?utm_source=Symfony%20Blog%20Feed&utm_medium=feed
https://redd.it/1lrd6d6
@r_php
https://symfony.com/blog/case-study-modernizing-audi-france-s-digital-ecosystem-with-symfony-6?utm_source=Symfony%20Blog%20Feed&utm_medium=feed
https://redd.it/1lrd6d6
@r_php
Symfony
Case study: Modernizing Audi France’s Digital Ecosystem with Symfony 6 (Symfony Blog)
🚗 In the fast-paced automotive industry, performance and reliability are key! Audi teamed up with Wide Agency to modernize its lead management system with Symfony 6 — unlocking agility, security…
New in PHP 8.5: Marking Return Values as Important
https://chrastecky.dev/programming/new-in-php-8-5-marking-return-values-as-important
https://redd.it/1lrdkal
@r_php
https://chrastecky.dev/programming/new-in-php-8-5-marking-return-values-as-important
https://redd.it/1lrdkal
@r_php
Reddit
From the PHP community on Reddit: New in PHP 8.5: Marking Return Values as Important
Explore this post and more from the PHP community
Packagist.org shutdown of Composer 1.x support postponed to September 1st, 2025
https://blog.packagist.com/packagist-org-shutdown-of-composer-1-x-support-postponed-to-september-1st-2025/
https://redd.it/1lrdcye
@r_php
https://blog.packagist.com/packagist-org-shutdown-of-composer-1-x-support-postponed-to-september-1st-2025/
https://redd.it/1lrdcye
@r_php
Private Packagist
Packagist.org shutdown of Composer 1.x support postponed to September 1st, 2025
With the deadline drawing near, we’d like to remind you that we are discontinuing Composer 1.x support on Packagist.org soon. We're extending our original timeline by one month to give teams additional preparation time to migrate. Composer 1.x metadata access…
Introducing Laritor — performance monitoring and observability tool for Laravel apps
https://youtu.be/q6HmIJ25gT0?si=sLBJN6KFXU9wDOVb
https://redd.it/1lrf0v0
@r_php
https://youtu.be/q6HmIJ25gT0?si=sLBJN6KFXU9wDOVb
https://redd.it/1lrf0v0
@r_php
YouTube
Laritor All Features Demo
Demo video of laritor. Laritor is an application performance monitoring and observability tool for laravel apps.
FrankenPHP on Laradock - Sharing Production Configuration
Doing a quick project, so need to know if we you have any recommendations on what I can improve to configure FrankenPHP to work with Laradock.
I created a derived project from Laradock.
I cannot create the Caddyfile that works with all static content and LetsEncrypt Certificate. Any help will be appreciated. Here is the project repo: Project Repo - Laradock + FrankenPHP + Caddy
https://redd.it/1ls4jci
@r_php
Doing a quick project, so need to know if we you have any recommendations on what I can improve to configure FrankenPHP to work with Laradock.
I created a derived project from Laradock.
I cannot create the Caddyfile that works with all static content and LetsEncrypt Certificate. Any help will be appreciated. Here is the project repo: Project Repo - Laradock + FrankenPHP + Caddy
https://redd.it/1ls4jci
@r_php
GitHub
GitHub - AncapIT/laravel-production-frankenphp
Contribute to AncapIT/laravel-production-frankenphp development by creating an account on GitHub.
Stop Ignoring Important Returns with PHP 8.5’s #[\NoDiscard] Attribute
https://amitmerchant.com/the-nodiscard-attribute-in-php-85/
https://redd.it/1ls69pf
@r_php
https://amitmerchant.com/the-nodiscard-attribute-in-php-85/
https://redd.it/1ls69pf
@r_php
Amit Merchant
Stop Ignoring Important Returns with PHP 8.5’s `#[\NoDiscard]` Attribute
When writing functions or methods in PHP, we often return values that are crucial for the caller to handle. Usually, those returned values need to be consumed. Check the following example.
Ai Bundle
A while ago I started creating a Bundle helping me to integrate LLMs into my Symfony applications. Its supports calling the most popular providers like OpenAi, Anthropic, Google, Mistral, DeepSeek, Ollama with a unified interface. It also supports with building prompts, tool calling, returning structured data from the LLM and a basic chat persistence.
Lately I also added tool calling via MCP (stdio and HTTP) and providing MCP tools (via. HTTP).
I know, I’m not the only one with this kinds of bundle, but maybe someone finds it useful:
https://github.com/johannes85/AiBundle
https://redd.it/1ls7qn7
@r_php
A while ago I started creating a Bundle helping me to integrate LLMs into my Symfony applications. Its supports calling the most popular providers like OpenAi, Anthropic, Google, Mistral, DeepSeek, Ollama with a unified interface. It also supports with building prompts, tool calling, returning structured data from the LLM and a basic chat persistence.
Lately I also added tool calling via MCP (stdio and HTTP) and providing MCP tools (via. HTTP).
I know, I’m not the only one with this kinds of bundle, but maybe someone finds it useful:
https://github.com/johannes85/AiBundle
https://redd.it/1ls7qn7
@r_php
GitHub
GitHub - johannes85/AiBundle: Symfony Ai Bundle
Symfony Ai Bundle. Contribute to johannes85/AiBundle development by creating an account on GitHub.