اعتبارسنجی حداکثر حجم فایل را در لاراول PHP و Web-Server
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 3 دقیقه

اعتبارسنجی حداکثر حجم فایل را در لاراول PHP و Web-Server

بسیاری از افراد این مشکل را دارند که قانون حداکثر حجم فایل را برابر با مثلا ۲۰ مگابایت قرار می‌دهند، اما همچنان با خطاهایی مواجه می‌شوند. حال بیایید علت و راه حل آن را ببینیم.

در ابتدا نگاهی به نحوه اعتبار سنجی حجم فایل در لاراول خواهیم داشت. در فایل‌های درخواست فرم (Form Request) خود یا متد validate()، می‌توانید با این پارامتر، آرایه‌ها را منتقل کنید:

[
  'image' => 'required|mimes:jpeg,bmp,png|size:20000',
]

آخرین بخش، یعنی این که حجم فایل نباید بیش از ۲۰ مگابایت (۲۰۰۰۰ کیلوبایت) باشد. اما این کار کافی نیست؛ زیرا محدودیت فایل فقط در سطح برنامه‌های لاراول وجود دارد.

تنظیمات PHP در php.ini

دو تنظیمات مربوط به حداکثر حجم فایل در فایل php.ini وجود دارند. در اینجا، آن‌ها را با مقدار پیشفرضشان می‌بینید:

upload_max_filesize = 2M
post_max_size = 8M

همانطور که می‌توانید ببینید، به طور پیشفرض فقط می‌توانید فایل‌هایی با حداکثر حجم ۲ مگابایت ارسال کنید، پس باید آن را به ۲۰ مگابایت تغییر دهید. اما با توجه به محدودیت درخواست POST که با post_max_size تعیین شده است، حتی این کار نیز شما را قادر نخواهد ساخت تا بتوانید فایل‌هایی با حجم ۲۰ مگابایت آپلود کنید؛ بلکه باید post_max_size را برابر با ۲۰ مگابایت یا ترجیحا بیشتر قرار دهید. زیرا احتمالا خود POST داده‌هایی علاوه بر فایل را در خود خواهد داشت، پس در این مورد آن را برابر با ۲۱ مگابایت قرار می‌دهیم.

همچنین مطمئن شوید که فایل php.ini صحیح را ویرایش می‌کنید. زیرا مواردی وجود دارند که چندین فایل برای نسخه‌های مختلف PHP، و همچنین برای تنظیمات FPM و CLI بر روی یک سرور قرار دارند.

اما حتی این کار نیز ممکن است کافی نباشد؛ زیرا در طرف دیگر، تنظیمات وب‌سرور را داریم.

تنظیمات Nginx و Apache

لاراول به طور پیشفرض یک سرور با LEMP می‌سازد، که از Nginx به عنوان یک وب‌سرور استفاده می‌کند. حتی بدون این که بدانید چگونه آن را پیکربندی کنید، باید به یک تنظیمات در فایل nginx.comf بپردازید: client_max_body_size.

در اینجا، اسکرینشاتی از سند رسمی آن مشاهده می‌کنید:

همانطور که می‌توانید ببینید، مقدار پیشفرض تنها ۱ مگابایت است که یعنی کل درخواست POST شما نهایتا ۱ مگابایت حجم خواهد داشت. پس باید این تنظیمات را برابر با ۲۰ مگابایت یا بالاتر قرار دهید.

اگر از وب‌سرور آپاچی استفاده می‌کنید، تنظیمات دیگری به نام LimitRequestBody وجود دارد. در اینجا اسکرینشاتی از سند اصلی آن می‌بینید:

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

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

6 سال پیش
/@er79ka

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید