Documentation · Chapter 06

Move reading-list
without moving its secrets.

The repository supplies instructions; every new installation supplies its own values.

No real secret is required: we configure reading-list with safe values.

Final objective

Someone gets reading-list, understands expected variables, installs runtime, checks the project, and runs it without receiving your .env or editing a generated file.

1 — Prepare the example

phpaml — zsh
# .env.example
APP_ENV=development
APP_DEBUG=false
APP_URL=http://127.0.0.1:8910
APP_KEY=
DATABASE_DSN=sqlite:runtime/storage/database.sqlite
DATABASE_USER=root
DATABASE_PASSWORD=

Check that .gitignore contains .env and runtime/. The example documents expected shape without real secrets.

2 — Recreate the installation

phpaml — zsh
aml env:init
aml install
aml doctor
aml serve

Confirm the app works. Look at the runtime/config/app.php header only to recognize the generated file; do not edit it.

3 — Compare contexts

Local developmentAPP_DEBUG=true · http://127.0.0.1:8910
ProductionAPP_DEBUG=false · https://example.com

Code under src remains identical. Only environment values change. Restore APP_DEBUG=false after testing.

Final diagnosis

phpaml — zsh
aml test
aml doctor --production

The check deliberately fails while the URL is not HTTPS, the key is too short, or cache is absent. Every result indicates a concrete action.

SUMMARY

What to remember

  • The repository shares phpaml.json and .env.example.
  • Every installation creates its own .env.
  • AML generates runtime/config/app.php.
  • Debug helps locally but stays off publicly.
  • doctor --production checks requirements.