Laravel 11 Queue Jobs Not Running After PHP 8.3 Upgrade – Complete Fix
Upgrading to PHP 8.3 can break background job processing in Laravel 11. You will see issues like pending jobs sitting forever, php artisan queue:work not processing, or Horizon staying idle. The root cause is usually mismatched PHP binaries, missing extensions, or supervisor still pointing to an old version. Let’s fix them one by one.
Laravel 11 Queue Jobs Not Running After PHP 8.3 Upgrade
- 1. Confirm queue driver in .env
- 2. Check artisan queue worker version
- 3. Missing PHP extensions
- 4. Database queue issues after upgrade
- 5. Queue worker daemon not restarted
- 6. Supervisor still pointing to old PHP path (Linux)
- 7. Check Horizon workers
- 8. Permissions after upgrade
- 9. Cached config
1. Confirm queue driver in .env
Make sure you are running the right queue system.
QUEUE_CONNECTION=database
Other valid values:
- redis
- sync
- sqs
- database
If you use Redis or database and switch to sync, jobs will run instantly but avoid doing that in production.
2. Check artisan queue worker version
After upgrading, php CLI may still point to the old version.
Run:
php -v
If it is not PHP 8.3, workers are running the wrong binary. Use the correct PHP path when starting the worker:
/usr/bin/php8.3 artisan queue:work
On Windows (XAMPP/WAMP/Laragon):
C:\xampp\php\php.exe artisan queue:work
Restart your terminal after changing PATH.
3. Missing PHP extensions
Queue + cache + redis rely on specific modules. Check them:
php -m
For Redis queues you must see:
redis
If not installed:
Ubuntu / Debian:
sudo apt install php8.3-redis
sudo systemctl restart php8.3-fpm
Windows:
Enable in php.ini:
extension=php_redis
Then restart Apache or Nginx.
4. Database queue issues after upgrade
If using database queue, migrate jobs table:
php artisan queue:table
php artisan migrate
Also verify jobs and failed_jobs tables exist.
5. Queue worker daemon not restarted
Workers don’t auto-update after PHP upgrade. If you use queue:work, stop and restart it:
php artisan queue:restart
This gracefully reloads all workers.
6. Supervisor still pointing to old PHP path (Linux)
Open your Supervisor file:
/etc/supervisor/conf.d/laravel-worker.conf
Example corrected config:
command=/usr/bin/php8.3 /var/www/html/artisan queue:work --sleep=3 --tries=3
Save and restart:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart all
7. Check Horizon workers
If you use Laravel Horizon:
php artisan horizon:terminate
Horizon will restart with the new PHP binary.
Also verify Redis connection in .env:
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
8. Permissions after upgrade
On Linux, permission issues can stop workers.
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
Adjust user accordingly (nginx, ubuntu, ec2-user, etc.).
9. Cached config
After switching drivers or upgrading PHP, always clear cache:
php artisan config:clear
php artisan cache:clear
php artisan optimize:clear
Final checklist
- Correct queue driver in
.env - Verify PHP 8.3 is used by workers, Horizon, and Supervisor
- Install required extensions (redis, pdo, etc.)
- Restart queue workers or Horizon
- Fix OS-level permissions if using Linux
- Clear Laravel caches
Following these steps will get your Laravel 11 queue system running normally again after upgrading to PHP 8.3.