Skip to main content

Environment File

Ecom uses Laravel’s environment configuration system. All environment-specific settings are stored in the .env file at the root of your application.
The .env file is automatically created from .env.example during installation. Never commit .env to version control.

Creating Environment File

1

Copy Example File

cp .env.example .env
2

Generate Application Key

php artisan key:generate
3

Configure Environment Variables

Edit .env file with your specific settings

Core Environment Variables

Application Settings

.env
# Application Identity
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
Type: String
Default: Laravel
Description: The name of your application used in emails and notifications
APP_NAME="My Ecom Store"
Type: String
Default: local
Options: local, staging, production
Description: Current environment mode
# Development
APP_ENV=local

# Production
APP_ENV=production
Type: String
Default: Empty (generated)
Description: Encryption key for the application
This is automatically generated by php artisan key:generate. Never share this key.
APP_KEY=base64:randomgeneratedkey...
Type: Boolean
Default: true (local), false (production)
Description: Enable detailed error messages
CRITICAL: Always set to false in production to prevent exposing sensitive information.
# Development
APP_DEBUG=true

# Production
APP_DEBUG=false
Type: URL
Default: http://localhost
Description: Base URL of your application
# Local
APP_URL=http://localhost:8000

# Production
APP_URL=https://yourdomain.com

Logging Configuration

.env
LOG_CHANNEL=stack
Available Channels:
  • stack - Multiple log channels (default)
  • single - Single log file
  • daily - Daily log files
  • slack - Slack notifications
  • syslog - System log
  • errorlog - PHP error log

Database Configuration

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Default Port: 3306
Configured in: config/database.php:42
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ecom_database
DB_USERNAME=ecom_user
DB_PASSWORD=secure_password
MySQL uses utf8mb4 charset and utf8mb4_unicode_ci collation by default.
Default Port: 5432
Configured in: config/database.php:57
.env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=ecom_database
DB_USERNAME=postgres
DB_PASSWORD=secure_password
Configured in: config/database.php:36
.env
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite
Default Port: 1433
Configured in: config/database.php:70
.env
DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_PORT=1433
DB_DATABASE=ecom_database
DB_USERNAME=sa
DB_PASSWORD=secure_password

Cache & Session Configuration

.env
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
Default: file
Options: file, redis, memcached, database, array
# Development
CACHE_DRIVER=file

# Production (recommended)
CACHE_DRIVER=redis
Default: sync
Options: sync, database, redis, beanstalkd, sqs
# Development
QUEUE_CONNECTION=sync

# Production
QUEUE_CONNECTION=redis
When using redis or database, you need to run queue workers:
php artisan queue:work
SESSION_DRIVER Default: file
SESSION_LIFETIME Default: 120 (minutes)
SESSION_DRIVER=file
SESSION_LIFETIME=120

# For production with Redis
SESSION_DRIVER=redis
SESSION_LIFETIME=1440

Redis Configuration

.env
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Redis is configured in config/database.php:107 with two databases:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0
Ecom uses predis as the Redis client (config/database.php:109).

Mail Configuration

.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=[email protected]
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[email protected]
MAIL_FROM_NAME="${APP_NAME}"
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your-mailtrap-username
MAIL_PASSWORD=your-mailtrap-password
MAIL_ENCRYPTION=null
.env
MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=your-domain.com
MAILGUN_SECRET=your-mailgun-secret
.env
MAIL_DRIVER=ses
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=us-east-1

Broadcasting Configuration

.env
BROADCAST_DRIVER=log

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
For real-time features, configure Pusher or use Laravel Echo with Redis.

Environment-Specific Settings

.env
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8000

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=ecom_dev

CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file

MAIL_DRIVER=log

Security Best Practices

Critical Security Rules:
  1. Never commit .env to version control
  2. Always set APP_DEBUG=false in production
  3. Use strong, unique APP_KEY for each environment
  4. Use environment variables for all sensitive data
  5. Restrict file permissions: chmod 600 .env
  6. Regularly rotate credentials and keys

Verifying Configuration

Test your environment configuration:
# Check current environment
php artisan env

# Test database connection
php artisan migrate:status

# Clear and cache configuration
php artisan config:clear
php artisan config:cache

Next Steps

Database Setup

Configure and migrate your database

Deployment

Deploy to production environment

Build docs developers (and LLMs) love