The environment variable is read from the variable defined in the Apache host configuration. For each environment, this variable must be defined on the relevant server.
<VirtualHost *:80>
SetEnv "APP_ENV" "local"
ServerName myproject
ServerAdmin webmaster@localhost
DocumentRoot /var/www/myproject/public/
DirectoryIndex index.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
So your backend application accesses the environment variable with the php native getEnv("APP_ENV") function.
When you want to install the software on the production server, copy the local.php.dist file and save it as prod.php.
- config
- autoload
.gitignore,
dependencies.global.php
local.php
local.php.dist
mezzio.global.php
prod.php
.gitignore
config.php
container.php
pipeline.php
routes.php
The default local.php file is as follows.
<?php
/**
* Development-only configuration.
*
* Put settings you want enabled when under development mode in this file, and
* check it into your repository.
*
* Developers on your team will then automatically enable them by calling on
* `composer development-enable`.
*/
declare(strict_types=1);
use Laminas\ConfigAggregator\ConfigAggregator;
return [
// Toggle the configuration cache. Set this to boolean false, or remove the
// directive, to disable configuration caching. Toggling development mode
// will also disable it by default; clear the configuration cache using
// `composer clear-config-cache`.
ConfigAggregator::ENABLE_CACHE => false,
// Enable debugging; typically used to provide debugging information within templates.
'debug' => true,
'token' => [
// Cookie encryption
'encryption' => [
'iv' => '', // generate random 16 chars
'enabled' => false, // it should be true in production environment
'secret_key' => '',
],
// Public and private keys are expected to be Base64 encoded.
// The last non-empty line is used so that keys can be generated with
'public_key' => '',
// The secret keys generated by other tools may
// need to be adjusted to match the input expected by libsodium.
'private_key' => '',
//
// for strong security reason it should be less
'session_ttl' => 15, // in minutes (TTL cannot be less then 10 minute)
// you can reduce the time for higher security
// for how long the token will be valid in the app.
// in every "x" time the token will be refresh.
'token_validity' => 5, // in minutes
// whether to check the IP and User Agent when the token is resolved.
//
'validation' => [
'user_ip' => true,
'user_agent' => true,
],
],
'db' => [
'driver' => 'Pdo_Mysql',
'driver_options' => [
// PDO::ATTR_PERSISTENT => true,
// https://www.php.net/manual/tr/mysqlinfo.concepts.buffering.php
//
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => false, // should be false
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_STRINGIFY_FETCHES => false,
// Enable exceptions
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
],
'database' => 'olobase_default',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'platform' => 'Mysql',
],
'redis' => [
'host' => 'localhost',
'port' => '6379',
'timeout' => 60,
'password' => '',
]
];
The environment variable must be defined as SetEnv "APP_ENV" "prod" in the apache host file where the production server is located.
If you want to change the environment variable names, first you must change the names in the config/autoload/.gitignore file.
local.php
*.local.php
production.php
prod.php
test.php
qa.php