خطای 413 یا خطای Request Entity Too Large نشان می‌دهد که وب سرور به گونه‌ای پیکربندی شده است که اندازه فایل‌های بزرگ را محدود کند. این محدودیت را Nginx با استفاده از گزینه client_max_body_size تعیین می‌نماید. در این صورت، اگر اندازه یک درخواست از مقدار تعیین شده فراتر رود، خطای 413 یا Request Entity Too Large به کلاینت بازگردانده می‌شود. این خطا به شکل زیر می‌باشد:

 

 

برای اینکه اجازه دانلود فایل‌هایی با اندازه بزرگ‌تر از این مقدار تعیین شده به شما داده شود، باید تنظمات nginx و php را تغییر دهید.

 

این مطلب نیز ممکن است برای شما مفید باشد: آموزش فعال کردن SOAP روی لینوکس

 

پیکربندی Nginx

برای حل این مشکل باید ابتدا فایل nginx.conf خود را ویرایش نمایید. بدین منظور، باید از طریق SSH به سرور خود متصل شوید؛ در صورتی که نمی‌دانید چگونه می‌توان با SSH به سرور متصل شد، این مقاله برای شماست: نحوه اتصال به ssh

 سپس با تایپ یکی از دستورات زیر، فایل nginx.conf را در یک ویرایشگر متن مانند vi ،joe و یا nano باز کنید:

# vi /etc/nginx/nginx.conf

ما در این مقاله از ویرایشگر nano استفاده می‌کنیم؛ در صورتی که میخواهید این ویرایشگر را نصب کنید، میتوانید از این آموزش استفاده کنید: نصب nano در لینوکس

همچنین دقت کنید در صورتی که از کاربر root استفاده نمی‌کنید، باید از دستور sudo در ابتدای دستور خود استفاده کنید.

ویرایشگر متن نانو:

$ sudo nano /etc/nginx/nginx.conf

ویرایشگر متن vi:

# vi /usr/local/nginx/conf/nginx.conf

سپس در nginx.conf، خط زیر را به http یا سرور یا موقعیت مکانی اضافه کنید:

# set client body size to 2M #
client_max_body_size 2M;

بخش client_max_body_size حداکثر اندازه فایل قابل قبول برای بارگیری را تعیین می‌کند، که در قسمت درخواست و توسط خط Content-Length مشخص می‌شود. اگر اندازه فایل از مقدار تعیین شده بیشتر باشد، کلاینت خطای 413 یا خطای Request Entity Too Large را دریافت می‌کند.

در آخر تغییرات را ذخیره کرده و فایل را ببندید. پس از آن، وب سرور nginx را مجدداً بارگیری کنید. بدین منظور می‌توانید از دستورات زیر استفاده نمایید:

# /usr/local/nginx/sbin/nginx -s reload

استفاده از خود nginx برای بارگیری مجدد آن:

# /sbin/nginx -s reload

برای لینوکس RHEL/CentOS/Debian/Ubuntu:

# service nginx reload

اگر از سیستم مبتنی بر systemd استفاده می‌کنید، دستور زیر را اجرا نمایید:

$ sudo systemctl reload nginx.service

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب و پیکربندی PhpMyAdmin با وب سرور Nginx درسیستم عامل CentOS 7.x

 

پیکربندی PHP (اختیاری)

php شما نیز محدودیت‌هایی در اندازه فایل قابل بارگذاری ایجاده می‌نماید. برای تغییر تنظیمات آن باید php.ini را ویرایش کرده و دستورالعمل‌های زیر را وارد نمایید.

;This sets the maximum amount of memory in bytes that a script is allowed to allocate
memory_limit = 32M

;The maximum size of an uploaded file.
upload_max_filesize = 2M

;Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize
post_max_size = 3M

اگر از PHP-FPM استفاده می‌کنید، با استفاده از یکی از دستورات زیر آن را مجدداً راه اندازی نمایید:

$ sudo systemctl restart php-fpm
## OR ##
$ sudo systemctl restart php7.0-fpm.service
## OR ##
$ sudo /usr/local/etc/rc.d/php-fpm restart 

در آخر تغییرات را ذخیره کرده و فایل را ببندید.

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب وب سرور Nginx بر روی دایرکت ادمین

 

رفع خطاهای مربوط به مجوز

جدا از تنظیم Nginx و PHP، باید خطاهای مجوز فایل را نیز برطرف نمایید. بدین منظور باید خطاها را در فایل error.log وب سرور خود جستجو کنید. در زیر یک نمونه خطای گزارش شده به وب سرور Lighttpd نشان داده شده است.

2017-07-18 07:09:18: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-9UMUXj Permission denied 
2017-07-18 07:23:45: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-a4PNg1 Permission denied 
2017-07-18 07:25:50: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-xIzdjU Permission denied 
2017-07-18 07:27:30: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-2s3I9J Permission denied 
2017-07-18 07:29:04: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-9KNsVa Permission denied 
2017-07-18 07:30:19: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-myoWrl Permission denied

برای حل این مشکل باید مجوز صحیح را با استفاده از دستور chmod یا دستور chown تنظیم نمایید؛ به عنوان مصال در صورتی که شما از وب‌سرور lighttpd استفاده می‌کنید، این دستور را اجرا کنید:

$ sudo chown -R lighttpd:lighttpd /var/cache/lighttpd/

 

همچنین برای اصلاح سطح دسترسی فایل‌ها و دایرکتوری ها میتوانید از این آموزش استفاده بفرمایید:

اصلاح دسترسی فایل ها و دایرکتوری ها در لینوکس

 

 

منبع:

cyberciti