.env a site reads its configuration from lives in the site’s shared
directory on the server and is linked into every release. That is what makes it
survive a deploy.
It is not stored in Shipways. Editing it reads the file off the machine on
demand, which is also why a site’s settings page still opens when the machine
is unreachable — the file simply is not there to show.
Reading and editing it
Reading needs permission to change the site, because the file holds the site’s secrets. Fetching the file is one decision and putting it on screen is another. Every line of it is a secret, and a settings page gets opened as often to check a domain as to change a key, frequently with somebody watching — so it stays hidden behind Reveal until you say otherwise. Saving writes the file and rebuilds the configuration cache, without which nothing would change: a Laravel application runningconfig:cache reads the
cache, not the file.
Earlier versions
Every save keeps the previous contents, with who saved it and when. Restoring one puts it back the same way a save does, cache rebuild included. This is the thing to reach for when a deploy started failing right after somebody edited configuration.Where the first one comes from
Shipways seeds the file on the first deploy and never touches it again. That is the only moment it can fill in a workingDB_ block, which is why
connecting a database when the site is
created is worth doing.
A fresh APP_KEY is generated at the same time.
Encrypted environment files
If your repository carries a.env.encrypted, give Shipways the key and each
release decrypts its own instead of being handed the shared one.
A site set up this way is not given the shared file at all — nothing is
linked over the top of it, because a link there would either be overwritten or
would send the decrypted file back into the shared copy.
The panel says so on the Environment tab: what you are looking at there is not
what the site is running.
The key is kept encrypted and never shown again. Saving an empty box takes it
away and puts the site back on the shared file.