Fichier de configuration
Position
Le fichier de configuration de webman se trouve dans le répertoire config/
et peut être récupéré dans le projet via la fonction config()
.
Récupérer la configuration
Récupérer toutes les configurations
config();
Récupérer toutes les configurations dans config/app.php
config('app');
Récupérer la configuration debug
dans config/app.php
config('app.debug');
Si la configuration est un tableau, vous pouvez obtenir la valeur des éléments internes en utilisant .
, par exemple
config('file.key1.key2');
Valeurs par défaut
config($key, $default);
config passe la valeur par défaut via le deuxième paramètre, si la configuration n'existe pas, elle retourne la valeur par défaut.
Si la configuration n'existe pas et qu'aucune valeur par défaut n'est définie, elle retourne null
.
Configuration personnalisée
Les développeurs peuvent ajouter leurs propres fichiers de configuration dans le répertoire config/
, par exemple
config/payment.php
<?php
return [
'key' => '...',
'secret' => '...'
];
Utilisation lors de la récupération de la configuration
config('payment');
config('payment.key');
config('payment.key');
Modifier la configuration
webman ne prend pas en charge la modification dynamique de la configuration, toutes les configurations doivent être modifiées manuellement dans les fichiers de configuration correspondants, puis rechargées ou redémarrées.
Attention
La configuration du serveur dansconfig/server.php
ainsi que la configuration des processus dansconfig/process.php
ne prennent pas en charge le rechargement, un redémarrage est nécessaire pour qu'elles prennent effet.
Rappel spécial
Si vous devez créer et lire des fichiers de configuration dans un sous-répertoire de config, par exemple : config/order/status.php
, alors le répertoire config/order
doit contenir un fichier app.php
avec le contenu suivant
<?php
return [
'enable' => true,
];
enable
étant true
, cela permet au framework de lire la configuration de ce répertoire.
La structure de répertoires du fichier de configuration ressemblera finalement à ceci
├── config
│ ├── order
│ │ ├── app.php
│ │ └── status.php
Ainsi, vous pouvez lire le tableau retourné ou les données de clé spécifiques dans status.php
via config.order.status
.
Explication du fichier de configuration
server.php
return [
'listen' => 'http://0.0.0.0:8787', // Port d'écoute (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'transport' => 'tcp', // Protocole de transport (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'context' => [], // Configuration SSL et autres (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'name' => 'webman', // Nom du processus (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'count' => cpu_count() * 4, // Nombre de processus (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'user' => '', // Utilisateur (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'group' => '', // Groupe d'utilisateurs (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'reusePort' => false, // Activation de la réutilisation du port (remplacé à partir de la version 1.6.0, à configurer dans config/process.php)
'event_loop' => '', // Classe de boucle d'événements, sélection automatique par défaut
'stop_timeout' => 2, // Temps d'attente maximal pour traiter les signaux stop/restart/reload ; si ce temps est dépassé, le processus sera forcé d'arrêter
'pid_file' => runtime_path() . '/webman.pid', // Emplacement de stockage du fichier PID
'status_file' => runtime_path() . '/webman.status', // Emplacement de stockage du fichier de statut
'stdout_file' => runtime_path() . '/logs/stdout.log', // Emplacement du fichier de sortie standard ; toutes les sorties après le démarrage de webman seront écrites dans ce fichier
'log_file' => runtime_path() . '/logs/workerman.log', // Emplacement du fichier journal de workerman
'max_package_size' => 10 * 1024 * 1024 // Taille maximale du paquet de données, 10 Mo. La taille des fichiers téléchargés est limitée par cette taille
];
app.php
return [
'debug' => true, // Activation du mode debug ; en cas d'erreur de page, une pile d'appels et d'autres informations de débogage seront affichées ; pour la sécurité en production, le mode debug doit être désactivé
'error_reporting' => E_ALL, // Niveau de rapport d'erreurs
'default_timezone' => 'Asia/Shanghai', // Fuseau horaire par défaut
'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public', // Emplacement du répertoire public
'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime', // Emplacement du répertoire d'exécution
'controller_suffix' => 'Controller', // Suffixe des contrôleurs
'controller_reuse' => false, // Réutilisation des contrôleurs
];
process.php
use support\Log;
use support\Request;
use app\process\Http;
global $argv;
return [
// Configuration des processus webman
'webman' => [
'handler' => Http::class, // Classe de traitement du processus
'listen' => 'http://0.0.0.0:8787', // Adresse d'écoute
'count' => cpu_count() * 4, // Nombre de processus, par défaut 4 fois le nombre de CPU
'user' => '', // Utilisateur sous lequel le processus s'exécute, utiliser un utilisateur à faible privilège
'group' => '', // Groupe sous lequel le processus s'exécute, utiliser un groupe à faible privilège
'reusePort' => false, // Activation de reusePort, les connexions seront réparties uniformément entre différents processus workers
'eventLoop' => '', // Classe de boucle d'événements, utilise la configuration server.event_loop si vide
'context' => [], // Configuration du contexte d'écoute, par exemple SSL
'constructor' => [ // Paramètres du constructeur de la classe de traitement du processus, ici pour la classe Http
'requestClass' => Request::class, // Classe de requête personnalisable
'logger' => Log::channel('default'), // Instance du journal
'appPath' => app_path(), // Emplacement du répertoire app
'publicPath' => public_path() // Emplacement du répertoire public
]
],
// Processus de surveillance, utilisé pour détecter les mises à jour de fichiers et les fuites de mémoire
'monitor' => [
'handler' => app\process\Monitor::class, // Classe de traitement
'reloadable' => false, // Ce processus n'exécute pas le rechargement
'constructor' => [ // Paramètres du constructeur de la classe de traitement du processus
// Répertoires à surveiller ; ne pas surcharger car cela ralentira la détection
'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')),
// Surveiller les mises à jour de ces extensions de fichiers
'monitorExtensions' => [
'php', 'html', 'htm', 'env'
],
// Autres options
'options' => [
// Activation de la surveillance des fichiers, uniquement valide sous linux ; par défaut, en mode daemon, la surveillance des fichiers n'est pas activée
'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
// Activation de la surveillance de la mémoire, uniquement sous linux
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
]
]
]
];
container.php
// Retourne une instance de conteneur d'injection de dépendances PSR-11
return new Webman\Container;
dependence.php
// Utilisé pour configurer les services et les dépendances dans le conteneur d'injection de dépendances
return [];
route.php
use support\Route;
// Définit la route pour le chemin /test
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 // Classe de traitement de vue par défaut
];
autoload.php
// Configuration des fichiers à charger automatiquement par le framework
return [
'files' => [
base_path() . '/app/functions.php',
base_path() . '/support/Request.php',
base_path() . '/support/Response.php',
]
];
cache.php
// Configuration du cache
return [
'default' => 'file', // Fichier par défaut
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache') // Emplacement de stockage des fichiers cache
],
'redis' => [
'driver' => 'redis',
'connection' => 'default' // Nom de connexion redis, configuré dans redis.php
],
'array' => [
'driver' => 'array' // Cache en mémoire, périmé après redémarrage
]
]
];
redis.php
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
];
database.php
return [
// Base de données par défaut
'default' => 'mysql',
// Configurations de différentes bases de données
'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 [
// Définir la classe de traitement des exceptions
'' => support\exception\Handler::class,
];
log.php
return [
'default' => [
'handlers' => [
[
'class' => Monolog\Handler\RotatingFileHandler::class, // Gestionnaire
'constructor' => [
runtime_path() . '/logs/webman.log', // Nom du journal
7, //$maxFiles // Conserver les journaux des 7 derniers jours
Monolog\Logger::DEBUG, // Niveau de journalisation
],
'formatter' => [
'class' => Monolog\Formatter\LineFormatter::class, // Formateur
'constructor' => [null, 'Y-m-d H:i:s', true], // Paramètres de formatage
],
]
],
],
];
session.php
return [
// Type
'type' => 'file', // ou redis ou redis_cluster
// Gestionnaire
'handler' => FileSessionHandler::class,
// Configuration
'config' => [
'file' => [
'save_path' => runtime_path() . '/sessions', // Répertoire de stockage
],
'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', // Nom de la session
'auto_update_timestamp' => false, // Mise à jour automatique des horodatages, pour éviter que la session n'expire
'lifetime' => 7*24*60*60, // Durée de vie
'cookie_lifetime' => 365*24*60*60, // Durée de vie du cookie
'cookie_path' => '/', // Chemin du cookie
'domain' => '', // Domaine du cookie
'http_only' => true, // Accessible uniquement en http
'secure' => false, // Accessible uniquement en https
'same_site' => '', // Attribut SameSite
'gc_probability' => [1, 1000], // Probabilité de collecte de session
];
middleware.php
// Définir les middleware
return [];
static.php
return [
'enable' => true, // Activation de l'accès aux fichiers statiques de webman
'middleware' => [ // Middleware pour les fichiers statiques, peut être utilisé pour définir des stratégies de cache, CORS, etc.
//app\middleware\StaticFile::class,
],
];
translation.php
return [
// Langue par défaut
'locale' => 'zh_CN',
// Langue de secours
'fallback_locale' => ['zh_CN', 'en'],
// Emplacement de stockage des fichiers de langue
'path' => base_path() . '/resource/translations',
];