Platform.sh User Documentation

Local development

Sign up for Upsun

Get your free trial by clicking the link below.

Get your Upsun free trial

When you develop a Symfony project, a significant amount of work takes place locally rather than on an active Platform.sh environment. You want to ensure that the process of local development is as close as possible to a deployed environment.

You can achieve this through various approaches. For example, you can use Symfony Server with tethered data

To do so, when testing changes locally, you can connect your locally running Symfony Server to service containers on an active Platform.sh environment.

This methodology has several advantages:

  • It avoids installing anything on your local machine but PHP;
  • It ensures that you are using the same versions of all services on your local machine and in production.

Before you begin Anchor to this heading

You need:

  • A local copy of the repository for a project running on Platform.sh.

    You can clone an integrated source repository and set the remote branch. To do so, run symfony cloud:project:set-remote PROJECT_ID .

  • The Symfony CLI

1. Start your Symfony Server Anchor to this heading

To start your Symfony Server locally and display your Symfony app, run the following command:

symfony server:start -d
symfony open:local

This starts the Symfony Server and opens the app in your local browser.

2. Create the tethered connection Anchor to this heading

  1. Create a new environment off of production:

    symfony branch new-feature main
  2. Open an SSH tunnel to the new environment’s services:

    symfony tunnel:open

    This command returns the addresses for SSH tunnels to all of your services:

    symfony tunnel:open
        SSH tunnel opened to rediscache at: redis://127.0.0.1:30000
        SSH tunnel opened to database at: pgsql://main:main@127.0.0.1:30001/main
    
        Logs are written to: /Users/acmeUser/.platformsh/tunnels.log
    
        List tunnels with: symfony tunnels
        View tunnel details with: symfony tunnel:info
        Close tunnels with: symfony tunnel:close
    
        Save encoded tunnel details to the PLATFORM_RELATIONSHIPS variable using:
        export PLATFORM_RELATIONSHIPS="$(symfony tunnel:info --encode)"
  3. To expose Platform.sh services to your Symfony app, run the following command:

    symfony var:expose-from-tunnel

    This automatically configures your local Symfony app to use all your remote Platform.sh services (remote database, remote Redis component, etc.).

    To check that you’re now using remote data and components from Platform.sh, reload your local app within your browser.

  4. When you’ve finished your work, close the tunnels to your services by running the following command:

    symfony var:expose-from-tunnel --off
    symfony tunnel:close --all -y

Is this page helpful?