Ortamlar

Ortam değişkeni apache host konfigürasyonun da tanımlı olan değişkenden okunur. Her ortam için bu değişken ilgili sunucuda tanımlanmalıdır.

<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>

Böylece arka uç uygulamanız, php doğal getEnv("APP_ENV") fonksiyonu ile ortam değişkenine ulaşır.

Yeni bir Ortam Değişkeni Yaratmak

Yazılımı prodüksiyon sunucusuna yüklemek istediğinizde local.php.dist dosyasını kopyalayıp prod.php olarak kaydedin.

- 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

Varsayılan local.php dosyası aşağıdaki gibidir.

<?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' => '',
    ]
];

Ortam değişkeni prodüksiyon sunucusunun olduğu apache host dosyasında SetEnv "APP_ENV" "prod" olarak tanımlı olmalıdır.

Ortam Değişkeni Adlarını Değiştimek

Eğer ortam değişkeni adlarını değiştirmek istiyorsanız ilk önce config/autoload/.gitignore dosyası içerisindeki isimleri değiştirmelisiniz.

local.php
*.local.php
production.php
prod.php
test.php
qa.php