پیکربندی
معرفی
تمام فایل های پیکربندی چارچوب لاراول در
app/config
دایرکتوری ذخیره می شوند.
هر گزینه در هر فایل مستند است، بنابراین به راحتی می توانید فایل ها را
بررسی کنید و با گزینه های موجود در دسترس خود آشنا شوید.
گاهی اوقات ممکن است لازم باشد در زمان اجرا به مقادیر پیکربندی دسترسی
داشته باشید.
می توانید این کار را با استفاده از
Config
کلاس انجام دهید:
دسترسی به یک مقدار پیکربندی
Config::get('app.timezone');
همچنین میتوانید یک مقدار پیشفرض را برای بازگشت در صورت عدم وجود گزینه پیکربندی مشخص کنید:
$timezone = Config::get('app.timezone', 'UTC');
تنظیم یک مقدار پیکربندی
توجه داشته باشید که نحو سبک "نقطه" ممکن است برای دسترسی به مقادیر در فایل های مختلف استفاده شود. همچنین می توانید مقادیر پیکربندی را در زمان اجرا تنظیم کنید:
Config::set('database.default', 'sqlite');
مقادیر پیکربندی که در زمان اجرا تنظیم میشوند فقط برای درخواست فعلی تنظیم میشوند و به درخواستهای بعدی منتقل نمیشوند.
پیکربندی محیط
معمولاً داشتن مقادیر پیکربندی متفاوت بر اساس محیطی که برنامه در آن اجرا می شود مفید است. برای مثال، ممکن است بخواهید از یک درایور حافظه پنهان در دستگاه توسعه محلی خود نسبت به سرور تولید استفاده کنید. انجام این کار با استفاده از پیکربندی مبتنی بر محیط آسان است.
به سادگی یک پوشه در
config
دایرکتوری ایجاد کنید که با نام محیط شما مطابقت داشته باشد، مانند
local
.
در مرحله بعد، فایل های پیکربندی را که می خواهید لغو کنید ایجاد کنید و
گزینه های آن محیط را مشخص کنید.
به عنوان مثال، برای نادیده گرفتن درایور کش برای محیط محلی، باید یک
cache.php
فایل
app/config/local
با محتوای زیر ایجاد کنید:
<?php return array( 'driver' => 'file', );
توجه: از «تست» به عنوان نام محیط استفاده نکنید. این برای تست واحد رزرو شده است.
توجه داشته باشید که لازم نیست هر گزینه ای را که در فایل پیکربندی پایه وجود دارد، مشخص کنید، بلکه فقط گزینه هایی را که می خواهید لغو کنید، مشخص کنید. فایل های پیکربندی محیطی بر روی فایل های پایه "آبشار" خواهند شد.
در مرحله بعد، باید به فریمورک آموزش دهیم که چگونه تعیین کند که در کدام
محیط اجرا می شود. محیط پیش فرض همیشه
production
.
با این حال، می توانید محیط های دیگری را در
bootstrap/start.php
فایل در ریشه نصب خود راه اندازی کنید.
در این فایل شما یک
$app->detectEnvironment
تماس را پیدا خواهید کرد.
آرایه ارسال شده به این روش برای تعیین محیط فعلی استفاده می شود.
در صورت نیاز می توانید محیط ها و نام ماشین های دیگری را به آرایه اضافه
کنید.
<?php $env = $app->detectEnvironment(array( 'local' => array('your-machine-name'), ));
در این مثال، 'local' نام محیط و 'your-machine-name' نام میزبان سرور شما
است.
در لینوکس و مک، میتوانید نام میزبان خود را با استفاده از
hostname
دستور ترمینال تعیین کنید.
اگر به تشخیص محیط انعطافپذیرتر نیاز دارید، میتوانید a را
Closure
به
detectEnvironment
روش ارسال کنید، که به شما امکان میدهد شناسایی محیط را هر طور که
میخواهید پیادهسازی کنید:
$env = $app->detectEnvironment(function(){ return $_SERVER['MY_LARAVEL_ENV'];});
دسترسی به محیط برنامه فعلی
می توانید از طریق روش زیر به محیط برنامه فعلی دسترسی پیدا کنید
environment
:
$environment = App::environment();
همچنین میتوانید آرگومانهایی را به
environment
متد ارسال کنید تا بررسی کنید که آیا محیط با مقدار مشخصی مطابقت دارد یا
خیر:
if (App::environment('local')){ // The environment is local} if (App::environment('local', 'staging')){ // The environment is either local OR staging...}
پیکربندی ارائه دهنده
هنگام استفاده از پیکربندی محیط، ممکن است بخواهید
ارائه دهندگان خدمات
محیطی را به فایل پیکربندی اولیه خود "ضمیمه" کنید
app
.
با این حال، اگر این را امتحان کنید، متوجه خواهید شد که
app
ارائه دهندگان محیط، ارائه دهندگان را در
app
فایل پیکربندی اولیه شما نادیده می گیرند.
برای اجبار کردن ارائه دهندگان به پیوست، از روش کمکی در
فایل پیکربندی
append_config
محیط خود استفاده کنید:
app
'providers' => append_config(array( 'LocalOnlyServiceProvider',))
حفاظت از پیکربندی حساس
برای برنامه های "واقعی"، توصیه می شود تمام تنظیمات حساس خود را از فایل های پیکربندی خود دور نگه دارید. مواردی مانند رمزهای عبور پایگاه داده، کلیدهای Stripe API و کلیدهای رمزگذاری باید در صورت امکان از فایل های پیکربندی شما خارج شوند. بنابراین، ما باید آنها را در کجا قرار دهیم؟ خوشبختانه، لاراول یک راه حل بسیار ساده برای محافظت از این نوع آیتم های پیکربندی با استفاده از فایل های "dot" ارائه می دهد.
ابتدا
برنامه خود را به گونه ای پیکربندی کنید
که دستگاه شما را به عنوان موجود در
local
محیط تشخیص دهد.
در مرحله بعد، یک
.env.local.php
فایل در ریشه پروژه خود ایجاد کنید، که معمولاً همان دایرکتوری حاوی
composer.json
فایل شما است.
باید
.env.local.php
آرایهای از جفتهای کلید-مقدار را برگرداند، دقیقاً مانند یک فایل پیکربندی
معمولی لاراول:
<?php return array( 'TEST_STRIPE_KEY' => 'super-secret-sauce', );
تمام جفتهای کلید-مقدار بازگرداندهشده توسط این فایل بهطور خودکار از
طریق «superglobals»
$_ENV
و
$_SERVER
PHP در دسترس خواهند بود.
اکنون می توانید از داخل فایل های پیکربندی خود به این جهانی ها ارجاع دهید:
'key' => $_ENV['TEST_STRIPE_KEY']
حتما
.env.local.php
فایل را به فایل خود اضافه کنید
.gitignore
.
این به دیگر توسعه دهندگان تیم شما اجازه می دهد تا پیکربندی محیط محلی خود
را ایجاد کنند، و همچنین موارد پیکربندی حساس شما را از کنترل منبع پنهان کنند.
اکنون در سرور تولید خود، یک
.env.php
فایل در ریشه پروژه خود ایجاد کنید که حاوی مقادیر مربوط به محیط تولید شما
باشد.
مانند
.env.local.php
فایل، فایل تولیدی
.env.php
هرگز نباید در کنترل منبع گنجانده شود.
توجه: می توانید برای هر محیطی که برنامه شما پشتیبانی می کند یک فایل ایجاد کنید. به عنوان مثال، محیط در صورت وجود فایل،
development
آن را بارگذاری می کند ..env.development.php
با این حال،production
محیط همیشه از.env.php
فایل استفاده می کند.
حالت تعمیر و نگهداری
هنگامی که برنامه شما در حالت تعمیر و نگهداری است، یک نمای سفارشی برای همه
مسیرهای برنامه شما نمایش داده می شود.
این کار باعث میشود تا برنامه خود را در حین بهروزرسانی یا زمانی که در
حال تعمیر و نگهداری هستید، «غیرفعال» کنید.
فراخوانی
App::down
روش از قبل در فایل شما وجود دارد
app/start/global.php
.
پاسخ این روش زمانی برای کاربران ارسال می شود که برنامه شما در حالت تعمیر
و نگهداری باشد.
برای فعال کردن حالت نگهداری، به سادگی
down
دستور Artisan را اجرا کنید:
php artisan down
برای غیرفعال کردن حالت نگهداری، از
up
دستور زیر استفاده کنید:
php artisan up
برای نمایش یک نمای سفارشی زمانی که برنامه شما در حالت تعمیر و نگهداری
است، می توانید چیزی شبیه به زیر را به فایل برنامه خود اضافه کنید
app/start/global.php
:
App::down(function(){ return Response::view('maintenance', array(), 503);});
اگر بسته شدن به
down
متد برگردد
NULL
، حالت نگهداری برای آن درخواست نادیده گرفته میشود.
حالت نگهداری و صف
در حالی که برنامه شما در حالت تعمیر و نگهداری است، هیچ کار صفی انجام نخواهد شد. هنگامی که برنامه از حالت تعمیر و نگهداری خارج شد، کارها به صورت عادی انجام می شوند.