نسخه:

پیکربندی

معرفی

تمام فایل های پیکربندی چارچوب لاراول در config دایرکتوری ذخیره می شوند. هر گزینه مستند است، بنابراین به راحتی می توانید فایل ها را بررسی کنید و با گزینه های موجود در دسترس خود آشنا شوید.

این فایل‌های پیکربندی به شما امکان می‌دهند مواردی مانند اطلاعات اتصال پایگاه داده، اطلاعات سرور ایمیل، و همچنین مقادیر مختلف پیکربندی اصلی مانند منطقه زمانی برنامه و کلید رمزگذاری را پیکربندی کنید.

پیکربندی محیط

معمولاً داشتن مقادیر پیکربندی متفاوت بر اساس محیطی که برنامه در آن اجرا می شود مفید است. برای مثال، ممکن است بخواهید از یک درایور کش متفاوت به صورت محلی نسبت به سرور تولید خود استفاده کنید.

لاراول برای ساختن این مهم از کتابخانه 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 کمک کننده برای بازیابی مقادیر از این متغیرها در فایل های پیکربندی خود استفاده کنید. در واقع، اگر فایل‌های پیکربندی لاراول را مرور کنید، متوجه خواهید شد که بسیاری از گزینه‌ها در حال حاضر از این راهنما استفاده می‌کنند:

'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 متغیر محیطی در سطح سرور لغو کرد.

دسترسی به مقادیر پیکربندی

شما می توانید به راحتی با استفاده از تابع راهنمای جهانی config از هر نقطه در برنامه خود به مقادیر پیکربندی خود دسترسی پیدا کنید. مقادیر پیکربندی ممکن است با استفاده از نحو "نقطه"، که شامل نام فایل و گزینه ای است که می خواهید به آن دسترسی داشته باشید، قابل دسترسی است. یک مقدار پیش فرض نیز ممکن است مشخص شود و اگر گزینه پیکربندی وجود نداشته باشد، برگردانده می شود:

$value = config('app.timezone');
 
// Retrieve a default value if the configuration value does not exist...
$value = config('app.timezone', 'Asia/Seoul');

برای تنظیم مقادیر پیکربندی در زمان اجرا، یک آرایه را به config کمک کننده ارسال کنید:

config(['app.timezone' => 'America/Chicago']);

ذخیره سازی پیکربندی

برای افزایش سرعت برنامه، باید تمام فایل های پیکربندی خود را با استفاده از config:cache دستور Artisan در یک فایل ذخیره کنید. این همه گزینه های پیکربندی برنامه شما را در یک فایل واحد ترکیب می کند که می تواند به سرعت توسط فریمورک بارگذاری شود.

شما معمولاً باید php artisan config:cache دستور را به عنوان بخشی از فرآیند استقرار تولید خود اجرا کنید. این دستور نباید در طول توسعه محلی اجرا شود زیرا گزینه های پیکربندی اغلب در طول توسعه برنامه شما نیاز به تغییر دارند.

اگر فرمان را در طول فرآیند استقرار خود اجرا می کنید config:cache ، باید مطمئن باشید که env تابع را فقط از داخل فایل های پیکربندی خود فراخوانی می کنید. هنگامی که پیکربندی کش شد، .env فایل بارگذاری نخواهد شد. بنابراین، env تابع فقط متغیرهای محیطی سطح سیستم خارجی را برمی گرداند.

حالت اشکال زدایی

گزینه 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

/ هنگام دسترسی به این مسیر پنهان، سپس به مسیر برنامه هدایت می شوید . هنگامی که کوکی برای مرورگر شما صادر شد، می توانید برنامه را به طور معمول مرور کنید که گویی در حالت تعمیر و نگهداری نیست.

راز حالت نگهداری شما معمولاً باید از کاراکترهای الفا عددی و در صورت تمایل، خط تیره تشکیل شود. شما باید از استفاده از کاراکترهایی که معنای خاصی در 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 را برای انجام استقرار زمان توقف صفر با لاراول در نظر بگیرید.