نسخه:

پیکربندی

معرفی

تمام فایل های پیکربندی چارچوب لاراول در 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 را برای انجام استقرار زمان توقف صفر با لاراول در نظر بگیرید.