PHP
This is an example of how to set up a PHP application to deploy on Kinsta’s Application Hosting services from a GitHub repository.
This article also includes the following PHP application examples:
During the deployment process, Kinsta automatically installs dependencies defined in your composer.json file.
- Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – PHP.
- In MyKinsta, add an application with the Hello World PHP repository. The Start command can be left blank for the web process as Kinsta automatically detects the required command during the first deployment.
The app is available as soon as the build finishes, and the Kinsta Welcome page loads at your application’s URL.

Prefer to watch the video version?
Web Server Setup
Kinsta automatically configures an Apache web server that serves your index.php file from the main directory of the project in the usual fashion. Create an index.php file in your project folder as your default index page.
Jigsaw
This is an example of how to set up a static site with Jigsaw on Kinsta’s Application Hosting services from a GitHub repository.
Jigsaw is a static site framework that uses Blade templates to create your page layouts and Markdown to build your content within the templates so you can produce simple static sites without complex coding knowledge. More information is available on the Jigsaw website.
Jigsaw is based on Laravel; it’s a regular PHP-based application, so Kinsta automatically installs dependencies defined in your composer.json file during the deployment process.
- Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Jigsaw Starter
- In MyKinsta, add an application with the Jigsaw Starter repository.
- The Start command can be left blank for the web process as Kinsta automatically detects the required command during the first deployment. The first deployment may fail as you need to add the necessary Buildpacks.
- So that the application can build the CSS/JS files, you need to add two buildpacks: Node.js and PHP. Click Settings > Add buildpack, select Node.js > Add buildpack. Repeat this for PHP.
- Click Deployments > Deploy now > choose the required branch > Deploy application.
The app is available as soon as the build finishes, and a default Jigsaw page loads at your application’s URL.

Buildpacks
In most cases, you’ll want the application to build the CSS/JS files, so you’ll need to add these two Buildpacks:
- Node JS
- PHP
Web Server Setup
Start Command
When you deploy the application, Kinsta automatically creates a web process with npm start
as the Start command. If required, you can change this within Processes.
Laravel
This is an example of how to set up a Laravel application to deploy on Kinsta’s Application Hosting services from a GitHub repository.
Laravel is a regular PHP-based application, so during the deployment process, Kinsta automatically installs dependencies defined in your composer.json file.
- Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – Laravel.
- Laravel requires the
APP_KEY
environment variable to be set. You can generate an app key yourself locally, or you can use this online Laravel key generator. - In MyKinsta, add an application with the Hello World Laravel repository. In Environment variables, in Key 1, enter
APP_KEY
, and in Value 1, paste the key generated from Step 2, select Available during runtime and Available during build process. - The Start command can be left blank for the web process as Kinsta automatically detects the required command during the first deployment.
Note: The first deployment may fail because you need to add the necessary Buildpacks. - So that the application can build the CSS/JS files, you need to add two buildpacks: Node.js and PHP. Click Settings > Add buildpack, select Node.js > Add buildpack. Repeat this for PHP.
The buildpack that contains the primary language of your application must be the last one in the buildpacks list. In this example, PHP is the primary language and should be the last buildpack in the list. - Click Deployments > Deploy now > choose the required branch > Deploy application.
The app is available as soon as the build finishes, and the Kinsta Welcome page loads at your application’s URL.

Prefer to watch the video version?
Connect a Database
If you want to connect your application to a database, start by creating a database in the same data center your application is in.
- Add a database.
- Connect the database to the application by adding an internal connection and selecting the Add environment variables… checkbox. This will automatically populate the environment variables from the database.
- Some of the variable names (keys) Laravel uses are different from the ones automatically created in MyKinsta. Edit the variable keys as needed to match the variable names defined in Laravel’s database.php file. Below are the corresponding variable names (keys) for the database types Laravel supports.
Environment Variables
MySQL and PostgreSQL
Automatically Generated Key | Laravel Key |
DB_HOST | DB_HOST |
DB_PORT | DB_PORT |
DB_NAME | DB_DATABASE |
DB_USER | DB_USERNAME |
DB_PASSWORD | DB_PASSWORD |
DB_CONNECTION_URL | DB_URL |
Redis
Automatically Generated Key | Laravel Key |
DB_HOST | REDIS_HOST |
DB_PORT | REDIS_PORT |
DB_NAME | REDIS_DB |
DB_USER | REDIS_USERNAME |
DB_PASSWORD | REDIS_PASSWORD |
DB_CONNECTION_URL | REDIS_URL |
Laravel APP_KEY
Laravel requires the APP_KEY
environment variable to be set. If this key is not set, you will see a 500 error page served by Laravel. You can generate an app key yourself locally, or you can use the online Laravel key generator. Once you have a key, you can add it as an environment variable.
Buildpacks
In most cases, you’ll want the application to build the CSS/JS files, so you’ll need to add these two Buildpacks:
- Node.js
- PHP
The buildpack that contains the primary language of your application must be the last one in the buildpacks list. In this example, PHP is the primary language and should be the last buildpack in the list.
Web Server Setup
Start Command
The default web process is heroku-php-apache2
. This example includes an .htaccess file that reroutes all requests to public/index.php for Laravel. If needed, you can change this command when adding your application (Set up your processes) or on the application’s Processes page after deployment. You can use:
heroku-php-apache2 /public
or
php artisan serve --host 0.0.0.0 --port 8080
Leaf
This is an example of how to set up a Leaf PHP application to deploy on Kinsta’s Application Hosting services from a GitHub repository.
Leaf is a slim and lightweight PHP framework focused on developer experience, usability, and high-performance code. More information is available on the Leaf PHP website.
Kinsta automatically installs dependencies defined in your composer.json file during the deployment process.
- Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – Leaf PHP.
- In MyKinsta, add an application with the Hello World – Leaf PHP repository. The Start command can be left blank for the web process as Kinsta automatically detects the required command during the first deployment.
The app is available as soon as the build finishes, and the Kinsta Welcome page loads at your application’s URL.

Prefer to watch the video version?
Web Server Setup
Port
Kinsta automatically sets the PORT
environment variable. You should not define it yourself, and you should not hard-code it into the application.
Start Command
When deploying the application, Kinsta automatically creates a web process running heroku-php-apache2
.
Deployment Lifecycle
Whenever a deployment is initiated (through creating an application or redeploying due to an incoming commit), the composer install
command is run.
Statamic
This is an example of how to set up a Statamic application to deploy on Kinsta’s Application Hosting services from a GitHub repository.
Statamic is a flat-file CMS that, by default, stores all the data in the Git repository. Before you push the code to MyKinsta, installing Statamic locally is the recommended approach for creating and maintaining your site. Next, create a super user account, and then commit and push all the changes to the repository.
Statamic is based on Laravel; it’s a regular PHP-based application, so MyKinsta automatically installs dependencies defined in your composer.json file during the deployment process.
- Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Statamic Boilerplate.
- Statamic is based on Laravel, so the
APP_KEY
environment variable must be set. You can generate an app key yourself locally, or you can use this online Laravel key generator. - In MyKinsta, add an application with the Statamic Starter repository. In Environment variables:
- In Key 1, enter
APP_KEY
, and in Value 1, paste the key generated from Step 2. - Click Add another and in Key 2, enter
APP_KINSTA
, and in Value 2, entertrue
. - Select Available during runtime and Available during build process.
- In Key 1, enter
- The Start command can be left blank for the web process as Kinsta automatically detects the required command during the first deployment.
Note: The first deployment may fail because you need to add the necessary Buildpacks. - So that the application can build the CSS/JS files, you need to add two buildpacks: Node.js and PHP. Click Settings > Add buildpack, select Node.js > Add buildpack. Repeat this for PHP.
The buildpack that contains the primary language of your application must be the last one in the buildpacks list. In this example, PHP is the primary language and should be the last buildpack in the list. - Click Deployments > Deploy now > choose the required branch > Deploy application.
The app is available as soon as the build finishes, and the Statamic Welcome page loads at your application’s URL.

Prefer to watch the video version?
Environment Variables
Statamic requires the following environment variables to be set:
APP_KEY
– You can generate an app key yourself locally, or you can use the online Laravel key generator.APP_KINSTA
– set totrue
.
Buildpacks
In most cases, you’ll want the application to build the CSS/JS files, so you’ll need to add these two Buildpacks:
- Node.js
- PHP
The buildpack that contains the primary language of your application must be the last one in the buildpacks list. In this example, PHP is the primary language and should be the last buildpack in the list.
Web Server Setup
Start Command
The default web process is heroku-php-apache2 public/
. If needed, you can change this command when adding your application (Set up your processes) or on the application’s Processes page after deployment.
PHP To Send Emails
This is an example of how to set up a PHP application to send emails via SendGrid on Kinsta’s Application Hosting services, deployed from a GitHub repository.
Kinsta does not natively support outbound emails from servers. Sending emails through specialized outbound providers such as SendGrid or Mailchimp offers more flexibility and higher success rates for transactional and campaign emails.
- Log in to GitHub and create a new repository from this template (Use this template > Create a new repository): Kinsta – Hello World – Email Sending With PHP.
- In MyKinsta, add an application with the Hello World Email PHP repository. In Environment variables, add the following:
SENDGRID_API_KEY
: The API key from SendGrid.TEST_EMAIL_TO_ADDRESS
: The address to send the test email to.TEST_EMAIL_FROM_ADDRESS
: The address to send the test email from.TEST_ENDPOINT
: The endpoint to use as a trigger to send the test email. Please use a random string of at least 8 characters.
- The Start command can be left blank for the web process as Kinsta automatically detects the required command during the first deployment.
The app is available as soon as the build finishes and a Hello World page loads at your application’s URL.

Trigger an Email
Through a very simple index.php entrypoint, two endpoints are exposed; all others will return a 404:
/
: A simple page that returns the Hello World message/${TEST_ENDPOINT}
: A page that triggers a test email.
To trigger an email, find the URL of your deployment on the Deployments page, append your test endpoint to this URL, and visit the page. For example, if your TEST_ENDPOINT
is set to o34nifnodhni4of
and your latest deployment is at https://example.kinsta.app, you can trigger a test email from https://example.kinsta.app/o34nifnodhni4of in your browser.