اگر در حین upload فایل در سایت خود که از nginx به عنوان webserver استفاده میکند با error 413 (یا 413 Request Entity Too Large) مواجه شدید حتما مقاله زیر را بخوانید.
چه زمانی این error رخ میدهد؟
این error زمانی رخ میدهد که هر کدام از اپلیکیشن های شما تلاش میکند اطلاعات بیشتر از آنچه که در nginx و php محدود شده را به سرور آپلود کنند.
نحوه رفع مشکل
این مشکل را میتوان با افزایش سایز memory limit درتنظیمات nginx و php رفع کرد.
1 - تغییر فایل کانفیگ nginx
به منظور رفع این مشکل ما باید فایل nginx.conf که در مسیر زیر قرار دارد ویرایش کنیم.
متغییر client_max_body_size را جستجو کنید اگر آن را پیدا کردید تنها کافیست که سایز آن را به طور مثال به 100M تغییر دهید. اگر متغییر موجود نبود شما میتوانید آن را درون فایل و در پایان بلاک http { … } اضافه کنید.
برای مثال :
و برای اعمال تغییرات سرویس nginx را restart کنید.
2 - تغییر فایل php.ini برای محدودیت upload
در مورد همه موارد این قسمت مورد نیاز نیست اما شما ممکن است نیاز داشته باشید که تنظیمات آپلود php را نیز تغییر دهید تا مطمئن شوید که هیچ چیزی توسط تنظیمات php محدود نمیشود.
در اینجا ما نیاز داریم که فایل php.ini را ویرایش کنیم.
نکته : از آنجایی که در سرتاسر جهان 2 ورژن از php مورد استفاده قرار میگیرند (php5-fpm و php7.0-fpm) من هر دو کامند را برای شما قرار میدهم شما یکی از آنها با توجه به ورژن php خود استفاده کنید.
اگر از php5-fpm استفاده میکنید دستور زیر را اجرا کنید.
اگر از php7.0-fpm استفاده میکنید دستور زیر را اجرا کنید.
اکنون directive های زیر را پیدا کنید :
و محدودیت در سایز برای هر کدام از آنها برابر با 100M قرار دهید. (به صورت پیش فرض آنها برابر با 8M و 2M هستند.
نهایتا بعد از ذخیره فایل سرویس php را restart میکنید :
کاربران php7.0-fpm دستور زیر را استفاده کنند :
شما میتوانید هر گونه محدودیتی را در فایل php و nginx قرار دهید در اینجا ما محدودیت 100M را قرار دادیم که به معنای 100 مگابایت میباشد که از آن چیزی که ما نیاز داریم هم بیشتر است.
چه زمانی این error رخ میدهد؟
این error زمانی رخ میدهد که هر کدام از اپلیکیشن های شما تلاش میکند اطلاعات بیشتر از آنچه که در nginx و php محدود شده را به سرور آپلود کنند.
نحوه رفع مشکل
این مشکل را میتوان با افزایش سایز memory limit درتنظیمات nginx و php رفع کرد.
1 - تغییر فایل کانفیگ nginx
به منظور رفع این مشکل ما باید فایل nginx.conf که در مسیر زیر قرار دارد ویرایش کنیم.
کد PHP:
# sudo nano /etc/nginx/nginx.conf
کد PHP:
client_max_body_size 100M;
کد PHP:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
client_max_body_size 100M;
listen 80;
server_name localhost;
# Main location
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
}
کد PHP:
# sudo service nginx restart
2 - تغییر فایل php.ini برای محدودیت upload
در مورد همه موارد این قسمت مورد نیاز نیست اما شما ممکن است نیاز داشته باشید که تنظیمات آپلود php را نیز تغییر دهید تا مطمئن شوید که هیچ چیزی توسط تنظیمات php محدود نمیشود.
در اینجا ما نیاز داریم که فایل php.ini را ویرایش کنیم.
نکته : از آنجایی که در سرتاسر جهان 2 ورژن از php مورد استفاده قرار میگیرند (php5-fpm و php7.0-fpm) من هر دو کامند را برای شما قرار میدهم شما یکی از آنها با توجه به ورژن php خود استفاده کنید.
اگر از php5-fpm استفاده میکنید دستور زیر را اجرا کنید.
کد PHP:
# sudo nano /etc/php5/fpm/php.ini
کد PHP:
# sudo nano /etc/php/7.0/fpm/php.ini
کد PHP:
upload_max_filesize
post_max_size
کد PHP:
upload_max_filesize = 100M
post_max_size = 100M
کد PHP:
# sudo service php5-fpm restart
کد PHP:
# sudo service php7.0-fpm restart