به طور پیش فرض، مفسر 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
باشد تا بتوان میزان آپلود را به سادگی هندل کرده و با کمبود حافظه مواجه نگردید (چنانچه علاقمند به فراگیری گام به گام زبان برنامهنویسی PHP هستید، میتوانید به دورهٔ آموزش PHP در سکان آکادمی مراجعه نمایید.)