پیکربندی
- معرفی
- پیکربندی محیط
- دسترسی به مقادیر پیکربندی
- ذخیره سازی پیکربندی
- انتشار پیکربندی
- حالت اشکال زدایی
- حالت تعمیر و نگهداری
معرفی
تمام فایل های پیکربندی چارچوب لاراول در
config
دایرکتوری ذخیره می شوند. هر گزینه مستند است، بنابراین به راحتی می توانید فایل ها را بررسی کنید و با گزینه های موجود در دسترس خود آشنا شوید.
این فایلهای پیکربندی به شما امکان میدهند مواردی مانند اطلاعات اتصال پایگاه داده، اطلاعات سرور ایمیل، و همچنین مقادیر پیکربندی اصلی دیگر مانند منطقه زمانی برنامه و کلید رمزگذاری را پیکربندی کنید.
دستور
about
لاراول می تواند یک نمای کلی از پیکربندی، درایورها و محیط برنامه شما را از طریق
about
دستور Artisan نمایش دهد.
php artisan about
اگر فقط به بخش خاصی از خروجی نمای کلی برنامه علاقه مند هستید، می توانید آن بخش را با استفاده از
--only
گزینه فیلتر کنید:
php artisan about --only=environment
یا برای بررسی دقیق مقادیر یک فایل پیکربندی خاص، میتوانید از
config:show
دستور Artisan استفاده کنید:
php artisan config:show database
پیکربندی محیط
معمولاً داشتن مقادیر پیکربندی متفاوت بر اساس محیطی که برنامه در آن اجرا می شود مفید است. برای مثال، ممکن است بخواهید از یک درایور کش متفاوت به صورت محلی نسبت به سرور تولید خود استفاده کنید.
لاراول برای ساختن این مهم از کتابخانه PHP
DotEnv
استفاده می کند . در یک نصب جدید لاراول، دایرکتوری ریشه برنامه شما حاوی فایلی است
.env.example
که بسیاری از متغیرهای محیطی رایج را تعریف می کند. در طول مراحل نصب لاراول، این فایل به طور خودکار در کپی می شود
.env
.
فایل پیشفرض لاراول
.env
حاوی مقادیری از تنظیمات رایج است که ممکن است بر اساس اینکه برنامه شما به صورت محلی یا روی یک وب سرور تولیدی اجرا میشود، متفاوت باشد. سپس این مقادیر توسط فایل های پیکربندی داخل
config
دایرکتوری با استفاده از تابع لاراول خوانده می شوند
env
.
اگر در حال توسعه با یک تیم هستید، ممکن است بخواهید به اضافه کردن و به روز رسانی
.env.example
فایل با برنامه خود ادامه دهید. با قرار دادن مقادیر متغیر مکان در فایل پیکربندی مثال، دیگر توسعه دهندگان تیم شما می توانند به وضوح ببینند که کدام متغیرهای محیطی برای اجرای برنامه شما مورد نیاز است.
هر متغیری در
.env
فایل شما می تواند توسط متغیرهای محیط خارجی مانند متغیرهای محیطی در سطح سرور یا سطح سیستم لغو شود.
امنیت فایل های محیطی
فایل شما
.env
نباید به کنترل منبع برنامه شما متعهد شود، زیرا هر توسعه دهنده / سروری که از برنامه شما استفاده می کند ممکن است به پیکربندی محیط متفاوتی نیاز داشته باشد. علاوه بر این، در صورتی که یک مزاحم به مخزن کنترل منبع شما دسترسی پیدا کند، این یک خطر امنیتی خواهد بود، زیرا هر گونه اعتبار حساس در معرض دید قرار می گیرد.
با این حال، امکان رمزگذاری فایل محیطی خود با استفاده از رمزگذاری داخلی لاراول وجود دارد . فایل های محیط رمزگذاری شده ممکن است به طور ایمن در کنترل منبع قرار داده شوند.
فایل های محیطی اضافی
قبل از بارگذاری متغیرهای محیط برنامه، لاراول تعیین می کند که آیا یک
APP_ENV
متغیر محیطی به صورت خارجی ارائه شده است یا اینکه
--env
آرگومان CLI مشخص شده است. در این صورت، لاراول سعی می کند
.env.[APP_ENV]
فایلی را در صورت وجود بارگذاری کند. اگر وجود نداشته باشد،
.env
فایل پیش فرض بارگذاری می شود.
انواع متغیرهای محیطی
همه متغیرهای موجود در
.env
فایلهای شما معمولاً بهعنوان رشتهها تجزیه میشوند، بنابراین برخی از مقادیر رزرو شده ایجاد شدهاند تا بتوانید طیف وسیعتری از انواع را از تابع برگردانید
env()
:
.env
ارزش
|
env()
ارزش
|
---|---|
درست است، واقعی | (بول) درست است |
(درست است، واقعی) | (بول) درست است |
نادرست | (بول) نادرست |
(کاذب) | (بول) نادرست |
خالی | (رشته) '' |
(خالی) | (رشته) '' |
خالی | (تهی) پوچ |
(خالی) | (تهی) پوچ |
اگر نیاز به تعریف یک متغیر محیطی با مقداری دارید که حاوی فاصله است، میتوانید این کار را با قرار دادن مقدار در دو گیومه انجام دهید:
APP_NAME="My Application"
بازیابی پیکربندی محیط
همه متغیرهای لیست شده در فایل
زمانی که برنامه شما درخواستی دریافت می کند
.env
در PHP super-global بارگذاری می شوند .
$_ENV
با این حال، می توانید از
env
تابع برای بازیابی مقادیر از این متغیرها در فایل های پیکربندی خود استفاده کنید. در واقع، اگر فایل های پیکربندی لاراول را بررسی کنید، متوجه خواهید شد که بسیاری از گزینه ها از این تابع استفاده می کنند:
'debug' => env('APP_DEBUG', false),
دومین مقدار ارسال شده به
env
تابع "مقدار پیش فرض" است. اگر هیچ متغیر محیطی برای کلید داده شده وجود نداشته باشد، این مقدار برگردانده خواهد شد.
تعیین محیط فعلی
محیط برنامه فعلی از طریق
APP_ENV
متغیر فایل شما تعیین می شود
.env
. می توانید از طریق
environment
روش روی
App
نما
به این مقدار دسترسی پیدا کنید :
use Illuminate\Support\Facades\App; $environment = App::environment();
همچنین میتوانید آرگومانهایی را به
environment
متد ارسال کنید تا تعیین کنید که آیا محیط با مقدار مشخصی مطابقت دارد یا خیر.
true
اگر محیط با هر یک از مقادیر داده شده مطابقت داشته باشد،
متد برمی گردد :
if (App::environment('local')) { // The environment is local} if (App::environment(['local', 'staging'])) { // The environment is either local OR staging...}
تشخیص محیط برنامه فعلی را می توان با تعریف یک
APP_ENV
متغیر محیطی در سطح سرور لغو کرد.
رمزگذاری فایل های محیطی
فایل های محیطی رمزگذاری نشده هرگز نباید در کنترل منبع ذخیره شوند. با این حال، لاراول به شما امکان می دهد فایل های محیط خود را رمزگذاری کنید تا با خیال راحت به کنترل منبع با بقیه برنامه شما اضافه شوند.
رمزگذاری
برای رمزگذاری یک فایل محیطی، می توانید از
env:encrypt
دستور زیر استفاده کنید:
php artisan env:encrypt
با اجرای
env:encrypt
دستور، فایل شما رمزگذاری شده
.env
و محتوای رمزگذاری شده در یک
.env.encrypted
فایل قرار می گیرد. کلید رمزگشایی در خروجی فرمان ارائه می شود و باید در یک مدیر رمز عبور ایمن ذخیره شود. اگر میخواهید کلید رمزگذاری خود را ارائه دهید، میتوانید
--key
هنگام فراخوانی دستور از این گزینه استفاده کنید:
php artisan env:encrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF
طول کلید ارائه شده باید با طول کلید مورد نیاز رمز رمزگذاری مورد استفاده مطابقت داشته باشد. به طور پیش فرض، لاراول از
AES-256-CBC
رمزی استفاده می کند که به یک کلید 32 کاراکتری نیاز دارد. شما می توانید از هر رمزی که توسط رمزگذار لاراول پشتیبانی می شود با عبور دادن--cipher
گزینه هنگام فراخوانی دستور استفاده کنید.
اگر برنامه شما دارای چندین فایل محیطی مانند
.env
و می باشد
.env.staging
، می توانید با ارائه نام محیط از طریق گزینه، فایل محیطی را که باید رمزگذاری شود را مشخص کنید
--env
:
php artisan env:encrypt --env=staging
رمزگشایی
برای رمزگشایی یک فایل محیطی، می توانید از
env:decrypt
دستور استفاده کنید. این دستور به یک کلید رمزگشایی نیاز دارد که لاراول آن را از
LARAVEL_ENV_ENCRYPTION_KEY
متغیر محیطی بازیابی می کند:
php artisan env:decrypt
یا، ممکن است کلید مستقیماً از طریق گزینه به فرمان ارائه شود
--key
:
php artisan env:decrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF
هنگامی که
env:decrypt
دستور فراخوانی می شود، لاراول محتویات فایل را رمزگشایی می کند
.env.encrypted
و محتویات رمزگشایی شده را در
.env
فایل قرار می دهد.
این گزینه ممکن است
برای استفاده از یک رمز رمزگذاری سفارشی
--cipher
در اختیار فرمان قرار گیرد:
env:decrypt
php artisan env:decrypt --key=qUWuNRdfuImXcKxZ --cipher=AES-128-CBC
اگر برنامه شما دارای چندین فایل محیطی مانند
.env
و می باشد
.env.staging
، می توانید با ارائه نام محیط از طریق گزینه، فایل محیطی را که باید رمزگشایی شود را مشخص کنید
--env
:
php artisan env:decrypt --env=staging
برای بازنویسی یک فایل محیطی موجود، میتوانید این
--force
گزینه را برای
env:decrypt
دستور ارائه کنید:
php artisan env:decrypt --force
دسترسی به مقادیر پیکربندی
Config
شما می توانید به راحتی با استفاده از نما یا
config
عملکرد سراسری از هر نقطه در برنامه خود
به مقادیر پیکربندی خود دسترسی پیدا کنید .
مقادیر پیکربندی ممکن است با استفاده از نحو "نقطه"، که شامل نام فایل و گزینه ای است که می خواهید به آن دسترسی داشته باشید، قابل دسترسی است. یک مقدار پیش فرض نیز ممکن است مشخص شود و اگر گزینه پیکربندی وجود نداشته باشد، برگردانده می شود:
use Illuminate\Support\Facades\Config; $value = Config::get('app.timezone'); $value = config('app.timezone'); // Retrieve a default value if the configuration value does not exist...$value = config('app.timezone', 'Asia/Seoul');
برای تنظیم مقادیر پیکربندی در زمان اجرا، می توانید روش
Config
نما را فراخوانی کنید
set
یا آرایه ای را به
config
تابع ارسال کنید:
Config::set('app.timezone', 'America/Chicago'); config(['app.timezone' => 'America/Chicago']);
برای کمک به تجزیه و تحلیل استاتیک،
Config
نما همچنین روش های بازیابی پیکربندی تایپ شده را ارائه می دهد. اگر مقدار پیکربندی بازیابی شده با نوع مورد انتظار مطابقت نداشته باشد، یک استثنا ایجاد می شود:
Config::string('config-key');Config::integer('config-key');Config::float('config-key');Config::boolean('config-key');Config::array('config-key');
ذخیره سازی پیکربندی
برای افزایش سرعت برنامه، باید تمام فایل های پیکربندی خود را با استفاده از
config:cache
دستور Artisan در یک فایل ذخیره کنید. این همه گزینه های پیکربندی برنامه شما را در یک فایل واحد ترکیب می کند که می تواند به سرعت توسط فریمورک بارگذاری شود.
شما معمولاً باید
php artisan config:cache
دستور را به عنوان بخشی از فرآیند استقرار تولید خود اجرا کنید. این دستور نباید در طول توسعه محلی اجرا شود زیرا گزینه های پیکربندی اغلب در طول توسعه برنامه شما نیاز به تغییر دارند.
هنگامی که پیکربندی کش شد،
.env
فایل برنامه شما توسط فریمورک در طول درخواست ها یا دستورات Artisan بارگیری نمی شود. بنابراین،
env
تابع فقط متغیرهای محیطی سطح سیستم خارجی را برمی گرداند.
به همین دلیل، باید مطمئن شوید که
env
تابع را فقط از داخل فایل های پیکربندی ( ) برنامه خود فراخوانی می کنید
config
. با بررسی فایل های تنظیمات پیش فرض لاراول می توانید نمونه های زیادی از این موضوع را مشاهده کنید. با استفاده از
config
عملکردی
که در بالا توضیح داده شد
، میتوان به مقادیر پیکربندی از هر نقطه در برنامه شما دسترسی داشت
.
این
config:clear
دستور ممکن است برای پاکسازی پیکربندی حافظه پنهان استفاده شود:
php artisan config:clear
اگر فرمان را در طول فرآیند استقرار خود اجرا می کنید
config:cache
، باید مطمئن باشید کهenv
تابع را فقط از داخل فایل های پیکربندی خود فراخوانی می کنید. هنگامی که پیکربندی کش شد،.env
فایل بارگذاری نخواهد شد. بنابراین،env
تابع فقط متغیرهای محیطی سطح سیستم خارجی را برمی گرداند.
انتشار پیکربندی
اکثر فایل های پیکربندی لاراول قبلاً در
config
دایرکتوری برنامه شما منتشر شده اند. با این حال، برخی از فایل های پیکربندی مانند
cors.php
و
view.php
به طور پیش فرض منتشر نمی شوند، زیرا اکثر برنامه ها هرگز نیازی به تغییر آنها ندارند.
با این حال، می توانید از
config:publish
دستور Artisan برای انتشار فایل های پیکربندی که به طور پیش فرض منتشر نشده اند استفاده کنید:
php artisan config:publish php artisan config:publish --all
حالت اشکال زدایی
گزینه
debug
موجود در
config/app.php
فایل پیکربندی شما تعیین می کند که واقعاً چه مقدار اطلاعات در مورد یک خطا به کاربر نمایش داده می شود. به طور پیش فرض، این گزینه به گونه ای تنظیم شده است که به مقدار
APP_DEBUG
متغیر محیطی که در فایل شما ذخیره می شود، احترام بگذارد
.env
.
برای توسعه محلی، باید
APP_DEBUG
متغیر محیطی را رویtrue
. در محیط تولید شما، این مقدار باید همیشه باشدfalse
. اگر متغیرtrue
در مرحله تولید تنظیم شده باشد، در معرض خطر قرار دادن مقادیر حساس پیکربندی برای کاربران نهایی برنامه خود هستید.
حالت تعمیر و نگهداری
هنگامی که برنامه شما در حالت تعمیر و نگهداری است، یک نمای سفارشی برای همه درخواست ها در برنامه شما نمایش داده می شود. این کار باعث میشود تا برنامه خود را در حین بهروزرسانی یا زمانی که در حال تعمیر و نگهداری هستید، «غیرفعال» کنید. بررسی حالت تعمیر و نگهداری در پشته میانافزار پیشفرض برای برنامه شما گنجانده شده است. اگر برنامه در حالت تعمیر و نگهداری باشد،
Symfony\Component\HttpKernel\Exception\HttpException
نمونه ای با کد وضعیت 503 پرتاب می شود.
برای فعال کردن حالت نگهداری،
down
دستور Artisan را اجرا کنید:
php artisan down
اگر میخواهید
Refresh
هدر HTTP با تمام پاسخهای حالت نگهداری ارسال شود، میتوانید این
refresh
گزینه را هنگام فراخوانی
down
فرمان ارائه دهید. هدر
Refresh
به مرورگر دستور میدهد تا پس از تعداد ثانیههای مشخص شده، صفحه را بهطور خودکار بازخوانی کند:
php artisan down --refresh=15
همچنین میتوانید
retry
گزینهای برای فرمان ارائه دهید که به عنوان
مقدار هدر HTTP
down
تنظیم میشود ، اگرچه مرورگرها معمولاً این هدر را نادیده میگیرند:
Retry-After
php artisan down --retry=60
دور زدن حالت تعمیر و نگهداری
برای اینکه امکان دور زدن حالت تعمیر و نگهداری با استفاده از یک نشانه مخفی وجود داشته باشد، می توانید از این
secret
گزینه برای تعیین رمز عبور حالت نگهداری استفاده کنید:
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
پس از قرار دادن برنامه در حالت تعمیر و نگهداری، می توانید به URL برنامه مطابق با این نشانه بروید و لاراول یک کوکی دور زدن حالت تعمیر و نگهداری را برای مرورگر شما صادر می کند:
https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515
اگر می خواهید لاراول رمز مخفی را برای شما ایجاد کند، می توانید از این
with-secret
گزینه استفاده کنید. هنگامی که برنامه در حالت تعمیر و نگهداری قرار گرفت، این راز برای شما نمایش داده می شود:
php artisan down --with-secret
/
هنگام دسترسی به این مسیر پنهان، سپس به مسیر برنامه
هدایت می شوید .
هنگامی که کوکی برای مرورگر شما صادر شد، می توانید برنامه را به طور معمول مرور کنید که گویی در حالت تعمیر و نگهداری نیست.
راز حالت نگهداری شما معمولاً باید از کاراکترهای الفا عددی و در صورت تمایل، خط تیره تشکیل شود. شما باید از استفاده از کاراکترهایی که معنای خاصی در URLهایی مانند
?
یا دارند اجتناب کنید&
.
پیش رندر کردن نمای حالت نگهداری
اگر در حین استقرار از این فرمان استفاده کنید
php artisan down
، کاربران شما ممکن است در صورت دسترسی به برنامه در زمانی که وابستگی های Composer یا سایر اجزای زیرساخت شما در حال به روز رسانی هستند، گهگاه با خطا مواجه شوند. این به این دلیل رخ می دهد که بخش قابل توجهی از چارچوب لاراول باید بوت شود تا مشخص شود برنامه شما در حالت تعمیر و نگهداری است و نمای حالت تعمیر و نگهداری را با استفاده از موتور قالب ارائه می دهد.
به همین دلیل، لاراول به شما اجازه می دهد تا یک نمای حالت تعمیر و نگهداری را پیش رندر کنید که در همان ابتدای چرخه درخواست بازگردانده می شود. این نمای قبل از بارگیری هر یک از وابستگی های برنامه شما ارائه می شود. می توانید با استفاده از گزینه
down
دستور ، یک الگوی انتخابی خود را از قبل رندر کنید
render
:
php artisan down --render="errors::503"
تغییر مسیر درخواستهای حالت نگهداری
در حالی که در حالت تعمیر و نگهداری است، لاراول نمای حالت تعمیر و نگهداری را برای همه URL های برنامه ای که کاربر تلاش می کند به آنها دسترسی داشته باشد، نمایش می دهد. در صورت تمایل، می توانید به لاراول دستور دهید تا تمام درخواست ها را به یک URL خاص هدایت کند. این ممکن است با استفاده از
redirect
گزینه انجام شود. برای مثال، ممکن است بخواهید همه درخواستها را به
/
URI هدایت کنید:
php artisan down --redirect=/
غیرفعال کردن حالت نگهداری
برای غیرفعال کردن حالت نگهداری، از
up
دستور زیر استفاده کنید:
php artisan up
می توانید با تعریف الگوی خود در
resources/views/errors/503.blade.php
.
حالت نگهداری و صف
در حالی که برنامه شما در حالت تعمیر و نگهداری است، هیچ کار در صف رسیدگی نمی شود. هنگامی که برنامه از حالت تعمیر و نگهداری خارج شد، کارها به صورت عادی انجام می شوند.
جایگزین های حالت تعمیر و نگهداری
از آنجایی که حالت تعمیر و نگهداری به برنامه شما نیاز دارد که چند ثانیه از کار افتادگی داشته باشد، جایگزین هایی مانند Laravel Vapor و Envoyer را برای انجام استقرار زمان توقف صفر با لاراول در نظر بگیرید.