افزایش حجم آپلود فایل در phpmyadmin با تنظیمات فایل php.ini

افزایش حجم آپلود فایل در phpmyadmin با تنظیمات فایل php.ini

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

کاربرد این ترفند بیشتر در زمان‌هایی است که می‌خواهیم یک دیتابیس را در phpmyadmin ایمپورت کنیم، اما به خاطر حجم کم تنظیمات اولیه، قادر به انجام چنین کاری نخواهیم بود. برای ویرایش تنظیمات پیش‌فرض فایل php.ini، در سیستم عامل گنو/لینوکس توزیع اوبونتو، ابتدا باید وارد مسیر etc/php/7.0/apache2 شده و فایل php.ini را در یک ویرایشگر کد باز کنیم (البته این مسیر در صورتی درست است که نسخهٔ PHP نصب شده 7.0 باشد):


sudo nano /etc/php/7.0/apache2/php.ini

همان‌طور که در بالا مشاهده می‌شود، با استفاده از نرم‌افزاری همچون nano اقدام به باز کردن این فایل کرده‌ایم؛ پس از باز کردن این فایل، باید ابتدا به دنبال memory_limit (محدودیت حافظه) گشته و مقداری همچون 128M برای آن در نظر بگیریم (البته مقدار پیش‌فرض همین قدر است.) سپس به دنبال post_max_size (حداکثر حجم پست) گشته و مقداری بیش از حجم دیتابیسی که قرار است ایمپورت کنید، همچون 64M، در نظر گرفته و در نهایت مقدار در نظر گرفته شده برای upload_max_filesize (حداکثر حجم فایل آپلودی) را برابر مثلاً 20M در نظر می‌گیریم.

فقط توجه داشته باشیم که مقدار در نظر گرفته شده برای upload_max_filesize باید از مقدار در نظر گرفته شده برای post_max_size کمتر باشد؛ به عبارت دیگر، ترتیب حجم عبارات از بزرگ به کوچک باید به صورت زیر باشد:

memory_limit = 128M
post_max_size = 64M
upload_max_filesize = 20M

پس از ذخیره کردن فایل، حال نوبت به ری‌استارت کردن نرم‌افزار وب سرور آپاچی می‌رسد که با استفاده از دستور زیر این کار به راحتی امکان‌پذیر است:

service apache2 restart

از این پس به راحتی خواهید توانست در محیط phpmyadmin دیتابیس‌هایی با حجم نسبتاً بالایی را ایمپورت کنید. حال ممکن است این سؤال برای شما پیش بیاید که چرا ترتیب حجم دستورهای بالا باید به شکلی که توضیح داده شد باشند.

در توضیح این سؤال باید گفت که upload_max_filesize محدودیتی است که برای آپلود هر یک فایل در نظر گرفته شده است اما در این حالی است که post_max_size مرتبط با میزان محدودیتی است که کل ریکوئست را دربرمی‌گیرد که ممکن است چندین فایل را شامل شود. در ادامه، برای روشن شدن این مسأله مثالی می‌زنیم.

اگر مقدار در نظر گرفته شده برای post_max_size معادل با 20M باشد و مقدار در نظر گرفته شده برای upload_max_filesize معادل با 6M باشد، شما صرفاً می‌توانید تا ۳ فایلی که هر کدام 6 مگابایت باشند آپلود کنید که جمعاً می‌شود 18 مگابایت. در مقابل، مثلاً اگر post_max_size معادل با 6M باشد و مقدار upload_max_filesize معادل با 20M باشد، در چنین شرایطی شما صرفاً می‌توانید یک فایل ۶ مگابایتی را آپلود کنید چرا که به سقف ظرفیت post_max_size رسیده‌اید.

در پایان هم، مقدار در نظر گرفته شده برای memory_limit باید بیشتر از post_max_size باشد تا بتوانید میزان آپلود را به سادگی هندل کرده و با کمبود حافظه مواجه نگردید.