Konfigürasyon Dosyası
Konum
Webman'ın konfigürasyon dosyaları config/
dizininde bulunur. Projede config()
fonksiyonu aracılığıyla ilgili konfigürasyona erişim sağlanabilir.
Konfigürasyonu Alma
Tüm konfigürasyonu almak
config();
config/app.php
içindeki tüm konfigürasyonları almak
config('app');
config/app.php
içindeki debug
konfigürasyonunu almak
config('app.debug');
Eğer konfigürasyon bir dizi ise, içindeki elemanların değerine .
ile ulaşabilirsiniz, örneğin
config('file.key1.key2');
Varsayılan Değer
config($key, $default);
config ikinci parametre ile varsayılan değeri alır, konfigürasyon yoksa varsayılan değeri döner.
Eğer konfigürasyon yoksa ve varsayılan değer ayarlanmamışsa, null
döner.
Özelleştirilmiş Konfigürasyon
Geliştiriciler config/
dizininde kendi konfigürasyon dosyalarını ekleyebilir, örneğin
config/payment.php
<?php
return [
'key' => '...',
'secret' => '...'
];
Konfigürasyonu alırken kullanım
config('payment');
config('payment.key');
config('payment.key');
Konfigürasyonu Değiştirme
Webman dinamik konfigürasyon değişikliklerini desteklemez, bu nedenle tüm konfigürasyonlar ilgili konfigürasyon dosyasında manuel olarak değiştirilmelidir ve reload
veya restart
ile yeniden başlatılmalıdır.
Dikkat
Sunucu konfigürasyonuconfig/server.php
ve süreç konfigürasyonuconfig/process.php
reload'u desteklemez, etkili olabilmesi için restart gereklidir.
Özel Hatırlatma
Eğer konfigürasyonun alt dizininde konfigürasyon dosyası oluşturup okumak istiyorsanız, örneğin: config/order/status.php
, bu durumda config/order
dizininde bir app.php
dosyasına sahip olmanız gerekir. İçeriği şu şekilde olmalıdır:
<?php
return [
'enable' => true,
];
enable
değeri true
olduğunda, framework bu dizinin konfigürasyonunu okur.
Sonuçta konfigürasyon dosyası dizin ağaç yapısı aşağıdaki gibi olacaktır:
├── config
│ ├── order
│ │ ├── app.php
│ │ └── status.php
Öyleyse config.order.status
ile status.php
dosyasındaki dönen dizi veya belirli anahtar verilerine ulaşabilirsiniz.
Konfigürasyon Dosyası Açıklaması
server.php
return [
'listen' => 'http://0.0.0.0:8787', // Dinleme portu (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'transport' => 'tcp', // Taşıma katmanı protokolü (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'context' => [], // ssl gibi konfigürasyonlar (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'name' => 'webman', // Süreç adı (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'count' => cpu_count() * 4, // Süreç sayısı (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'user' => '', // Kullanıcı (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'group' => '', // Kullanıcı grubu (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'reusePort' => false, // Port tekrar kullanımının etkin olup olmadığı (1.6.0 versiyonundan itibaren kaldırıldı, config/process.php içinde yapılandırılmalı)
'event_loop' => '', // Olay döngüsü sınıfı, varsayılan otomatik seçim
'stop_timeout' => 2, // stop/restart/reload sinyali alındığında işlemlerin tamamlanması için bekleme süresi, bu süreyi aşarsa süreç zorla kapatılır
'pid_file' => runtime_path() . '/webman.pid', // pid dosyasının saklanacağı yer
'status_file' => runtime_path() . '/webman.status', // status dosyasının saklanacağı yer
'stdout_file' => runtime_path() . '/logs/stdout.log', // Standart çıktı dosyasının yeri, webman başlatıldığında tüm çıktılar bu dosyaya yazılacak
'log_file' => runtime_path() . '/logs/workerman.log', // workerman log dosyasının yeri
'max_package_size' => 10 * 1024 * 1024 // Maksimum veri paketi boyutu, 10M. Yüklenen dosya boyutu bu sınırlamaya tabidir
];
app.php
return [
'debug' => true, // Debug modunun etkin olup olmadığı, açık olduğunda sayfa hataları çağrı yığınını ve diğer hata ayıklama bilgilerini gösterecek, güvenli bir üretim ortamında debug kapatılmalıdır
'error_reporting' => E_ALL, // Hata raporlama seviyesi
'default_timezone' => 'Asia/Shanghai', // Varsayılan zaman dilimi
'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public', // public dizininin yeri
'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime', // runtime dizininin yeri
'controller_suffix' => 'Controller', // Kontrolcü son eki
'controller_reuse' => false, // Kontrolcülerin yeniden kullanılıp kullanılmayacağı
];
process.php
use support\Log;
use support\Request;
use app\process\Http;
global $argv;
return [
// webman süreç konfigürasyonu
'webman' => [
'handler' => Http::class, // Süreç işleme sınıfı
'listen' => 'http://0.0.0.0:8787', // Dinleme adresi
'count' => cpu_count() * 4, // Süreç sayısı, varsayılan cpu'nun 4 katı
'user' => '', // Süreç çalıştıran kullanıcı, düşük seviye bir kullanıcı kullanılmalıdır
'group' => '', // Süreç çalıştıran kullanıcı grubu, düşük seviye bir kullanıcı grubu kullanılmalıdır
'reusePort' => false, // reusePort'un etkin olup olmadığı, etkin olduğunda bağlantılar farklı worker süreçlerine eşit dağıtılır
'eventLoop' => '', // Olay döngüsü sınıfı, boşsa server.event_loop yapılandırmasını otomatik kullanır
'context' => [], // Dinleme bağlamı yapılandırması, örneğin ssl
'constructor' => [ // Süreç işleme sınıfının yapıcı fonksiyonu parametreleri, bu örnekte Http sınıfının yapıcı fonksiyonu
'requestClass' => Request::class, // İsteğe özel isteği sınıfı
'logger' => Log::channel('default'), // Log örneği
'appPath' => app_path(), // app dizininin yeri
'publicPath' => public_path() // public dizininin yeri
]
],
// İzleme süreci, dosya güncellemelerini otomatik yükleme ve bellek sızıntısını tespit etmek için
'monitor' => [
'handler' => app\process\Monitor::class, // İşleme sınıfı
'reloadable' => false, // Mevcut süreçte reload işlemi yapılmaz
'constructor' => [ // Süreç işleme sınıfı yapıcı fonksiyonu parametreleri
// İzlenen dizin, çok fazla eklenmemeli, algılama yavaşlayabilir
'monitorDir' => array_merge([
app_path(),
config_path(),
base_path() . '/process',
base_path() . '/support',
base_path() . '/resource',
base_path() . '/.env',
], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
// Bu uzantı dosyalarının güncellemeleri izlenecek
'monitorExtensions' => [
'php', 'html', 'htm', 'env'
],
// Diğer seçenekler
'options' => [
// Dosya izleme özelliği etkin mi, yalnızca linux altında geçerlidir, varsayılan olarak koruma modunda dosya izleme etkin değildir
'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
// Bellek izleme özelliği etkin mi, yalnızca linux altında geçerlidir
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
]
]
]
];
container.php
// bir psr-11 bağımlılık enjeksiyon konteyner örneği döner
return new Webman\Container;
dependence.php
// Bağımlılık enjeksiyon konteynerindeki hizmetleri ve bağımlılıkları yapılandırmak için
return [];
route.php
use support\Route;
// /test yolunun yönlendirmesini tanımlama
Route::any('/test', function (Request $request) {
return response('test');
});
view.php
use support\view\Raw;
use support\view\Twig;
use support\view\Blade;
use support\view\ThinkPHP;
return [
'handler' => Raw::class // Varsayılan görünüm işleme sınıfı
];
autoload.php
// Çerçeve otomatik yüklemek için yapılandırılan dosyalar
return [
'files' => [
base_path() . '/app/functions.php',
base_path() . '/support/Request.php',
base_path() . '/support/Response.php',
]
];
cache.php
// Önbellek yapılandırması
return [
'default' => 'file', // Varsayılan dosya
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache') // Önbellek dosyasının saklanacağı yer
],
'redis' => [
'driver' => 'redis',
'connection' => 'default' // redis bağlantı ismi, redis.php içindeki yapılandırmaya karşılık gelir
],
'array' => [
'driver' => 'array' // Bellek önbelleği, yeniden başlatıldığında geçersiz olur
]
]
};
redis.php
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
];
database.php
return [
// Varsayılan veritabanı
'default' => 'mysql',
// Çeşitli veritabanı yapılandırmaları
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'unix_socket' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'sqlite' => [
'driver' => 'sqlite',
'database' => '',
'prefix' => '',
],
'pgsql' => [
'driver' => 'pgsql',
'host' => '127.0.0.1',
'port' => 5432,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => 'localhost',
'port' => 1433,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'charset' => 'utf8',
'prefix' => '',
],
],
];
exception.php
return [
// İstisna işleme sınıfını ayarlama
'' => support\exception\Handler::class,
];
log.php
return [
'default' => [
'handlers' => [
[
'class' => Monolog\Handler\RotatingFileHandler::class, // İşleyici
'constructor' => [
runtime_path() . '/logs/webman.log', // Log adı
7, //$maxFiles // 7 gün içinde saklanan log
Monolog\Logger::DEBUG, // Log seviyesi
],
'formatter' => [
'class' => Monolog\Formatter\LineFormatter::class, // Biçimlendirici
'constructor' => [null, 'Y-m-d H:i:s', true], // Biçimlendirme parametreleri
],
]
],
],
];
session.php
return [
// Tip
'type' => 'file', // veya redis veya redis_cluster
// İşleyici
'handler' => FileSessionHandler::class,
// Yapılandırma
'config' => [
'file' => [
'save_path' => runtime_path() . '/sessions', // Saklama dizini
],
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'auth' => '',
'timeout' => 2,
'database' => '',
'prefix' => 'redis_session_',
],
'redis_cluster' => [
'host' => ['127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7001'],
'timeout' => 2,
'auth' => '',
'prefix' => 'redis_session_',
]
],
'session_name' => 'PHPSID', // oturum adı
'auto_update_timestamp' => false, // Zaman damgasını otomatik güncellemenin etkin olup olmadığı, oturumun süresi dolmaması için
'lifetime' => 7*24*60*60, // Yaşam süresi
'cookie_lifetime' => 365*24*60*60, // çerez yaşam süresi
'cookie_path' => '/', // çerez yolu
'domain' => '', // çerez alanı
'http_only' => true, // sadece http erişimi
'secure' => false, // sadece https erişimi
'same_site' => '', // SameSite niteliği
'gc_probability' => [1, 1000], // oturum geri kazanım olasılığı
];
middleware.php
// Ara katmanları ayarlama
return [];
static.php
return [
'enable' => true, // webman'ın statik dosya erişimini etkinleştirip etkinleştirmediği
'middleware' => [ // Statik dosya ara katmanları, önbellek stratejisi, çapraz alan ayarları vb. için kullanılabilir
//app\middleware\StaticFile::class,
],
];
translation.php
return [
// Varsayılan dil
'locale' => 'zh_CN',
// Geri dönüş dili
'fallback_locale' => ['zh_CN', 'en'],
// Dil dosyalarının saklanma yeri
'path' => base_path() . '/resource/translations',
];