# Laravel on Heroku

Canonical: https://inetgeek.com/stacks/laravel-on-heroku/

Heroku publishes its own guide for deploying Laravel.

PHP web framework with an ORM, queue workers and a scheduler that expects a persistent process.

## What Laravel needs

Every host claims to run Laravel, so the claim on its own decides nothing. These are the things Laravel requires from the platform underneath it, and what Heroku publishes about each. Heroku documents 4 of the 4.

| Requirement | Heroku | Why it matters |
| --- | --- | --- |
| Persistent processes | Supported | Queue workers and Horizon are long-running processes, not requests. They have to stay up between jobs. |
| Managed databases | Supported | Eloquent, migrations and the default session and cache drivers all expect a relational database. |
| Scheduled jobs | Supported | Laravel's scheduler is one cron entry calling schedule:run every minute. Without cron, nothing scheduled ever fires. |
| Persistent storage | Not supported | The default filesystem disk writes uploads under storage/app. On an ephemeral filesystem those files disappear at the next deploy. |

- Persistent processes source: https://devcenter.heroku.com/articles/dynos
- Managed databases source: https://devcenter.heroku.com/articles/heroku-postgresql
- Scheduled jobs source: https://devcenter.heroku.com/articles/scheduler
- Persistent storage source: https://devcenter.heroku.com/articles/dynos

## What Heroku documents

> This guide will walk you through the configuration and deployment of a Laravel 5 application.

Source: https://devcenter.heroku.com/articles/getting-started-with-laravel

### Laravel features on Heroku

- **laravel_scheduler**: Limited — Scheduler is a free add-on for running jobs on your app at scheduled time intervals, much like cron in a traditional server environment. [...] Once you access its interface, a dashboard will allow you to configure jobs to run every 10 minutes, every hour, or every day, at a specified time. ([source](https://devcenter.heroku.com/articles/scheduler))
- **storage_disk_mount**: Not supported — By default, Laravel will log errors and messages into a directory on disk, which isn't ideal, because Heroku uses an ephemeral filesystem and treats logs as streams of events across all running dynos. ([source](https://devcenter.heroku.com/articles/getting-started-with-laravel))
- **managed_mysql**: Limited — Although Heroku Postgres is the recommended relational database for Heroku apps because of its tight integration with the platform, there are options for applications that currently run on MySQL. [...] If your application uses MySQL-specific features, there are a number of MySQL providers in the Heroku Add-ons marketplace you can use instead of Heroku Postgres. ([source](https://devcenter.heroku.com/articles/heroku-mysql))
- **native_php_runtime**: Supported — Heroku supports PHP applications, including ones built with popular frameworks like Laravel and Symfony. [...] Heroku allows you to run your application using the official PHP runtime. ([source](https://devcenter.heroku.com/articles/php-support))

## What it costs to run there

|  | Heroku |
| --- | --- |
| Entry paid plan | $5 per month (Eco dynos plan, 1000 dyno hours shared across the account) |
| Pricing model | Usage-based on wall-clock time, prorated to the second |
| When you exceed a cap | Service sleeps: on the Eco plan ($5/month for a 1000 dyno-hour pool, the cheapest paid tier) exhausting the pool forces every Eco dyno on the account to sleep for the rest of the month, and extra hours cannot be bought |
| Regions | 2 regions on the Common Runtime, which is what a standard dyno runs in: eu (Europe) and us (United States). A further 10 — Dublin, Frankfurt, London, Montreal, Mumbai, Oregon, Singapore, Sydney, Tokyo and Virginia — exist only in Private Spaces, an Enterprise product. |

- Entry paid plan source: https://devcenter.heroku.com/articles/eco-dyno-hours
- Pricing model source: https://devcenter.heroku.com/articles/usage-and-billing
- When you exceed a cap source: https://devcenter.heroku.com/articles/eco-dyno-hours
- Regions source: https://devcenter.heroku.com/articles/regions

## Whether it suits you

Teams that want to deploy by pushing to Git and let the platform handle the runtime, with Postgres, a scheduler and Docker deploys available on the same platform.

Consider something else if: The dyno filesystem is ephemeral, and a web process must respond within 30 seconds of receiving a request.

Written by Palash Bagchi on 2026-09-05. This is a recommendation, not a sourced fact — it carries no citation because it is an opinion.

## Related

- Best hosting for Laravel: https://inetgeek.com/stacks/laravel/
- Heroku: https://inetgeek.com/hosting/heroku/
