افزایش محدودیت حجم آپلود در وردپرس (روی هر هاستی)
محدودیت فعلی آپلود وردپرس را بررسی کنید و آن را در جای درست برای هاست خود افزایش دهید: php.ini، .user.ini، .htaccess، cPanel، Nginx یا Cloudflare.
برای افزایش محدودیت آپلود در وردپرس، دو تنظیم PHP یعنی upload_max_filesize و post_max_size را در فایل پیکربندیای که هاست شما واقعا میخواند بالا ببرید. این فایل روی سروری که خودتان مدیریت میکنید php.ini است، روی بیشتر هاستهای اشتراکی که PHP-FPM یا FastCGI اجرا میکنند .user.ini، فقط وقتی Apache زبان PHP را بهصورت ماژول اجرا میکند .htaccess، یا MultiPHP INI Editor در cPanel. اگر سرور شما با Nginx کار میکند، client_max_body_size را هم افزایش دهید. ویرایش wp-config.php محدودیت آپلود را تغییر نمیدهد.
ابزار حداکثر حجم آپلود وردپرس یک حجم هدف را به مقادیر متناظر برای php.ini (یا .user.ini)، .htaccess و wp-config.php تبدیل میکند تا به جای تایپ دستی، آنها را جایگذاری کنید.
مرحله 1: محدودیت فعلی آپلود را بررسی کنید
پیش از هر تغییری، ببینید محدودیت الان چقدر است و کدام تنظیم آن را تعیین میکند.
- رسانه > افزودن. صفحه آپلود حداکثر حجم فایل را نشان میدهد. این همان عددی است که میخواهید بالا ببرید.
- ابزارها > سلامت سایت > اطلاعات. بخش مدیریت رسانه را گسترش دهید. مستندات سلامت سایت آنچه را آنجا نمایش داده میشود فهرست میکند: حداکثر حجم مجاز دادههای POST، حداکثر حجم فایل آپلودی و حداکثر حجم مؤثر فایل، که کوچکترِ این دو است. بخش سرور مقادیر بیشتری از PHP نشان میدهد.


وردپرس محدودیت خود را در تابع wp_max_upload_size() حساب میکند که upload_max_filesize و post_max_size را از PHP میخواند و کوچکتر را برمیدارد. اگر یکی 64M و دیگری 8M باشد، محدودیت شما 8M است.
مرحله 2: بدانید کدام تنظیمات مهماند
| تنظیم | چه چیزی را محدود میکند | پیشفرض PHP | کجا قابل تغییر است |
|---|---|---|---|
upload_max_filesize | بزرگترین فایل تکی آپلودشده | 2M | php.ini، .user.ini، .htaccess، httpd.conf |
post_max_size | کل درخواست POST، همراه با فایل | 8M | php.ini، .user.ini، .htaccess، httpd.conf |
memory_limit | حافظهای که PHP هنگام اجرا میتواند مصرف کند | 128M | همهجا، از جمله wp-config.php |
max_execution_time | ثانیههایی که یک اسکریپت میتواند اجرا شود | 30 | همهجا، از جمله wp-config.php |
client_max_body_size (Nginx) | بدنه درخواستی که Nginx میپذیرد | 1m | فقط در پیکربندی Nginx |
مقادیر پیشفرض PHP و حالتهای تغییر آنها از فهرست دستورهای php.ini آمده و مقدار پیشفرض Nginx از مستندات ماژول core در Nginx. بیشتر هاستها مقادیری بالاتر از پیشفرضهای PHP میگذارند، به همین دلیل اعداد واقعی خود را باید در سلامت سایت بخوانید.
upload_max_filesize و post_max_size همان چیزی هستند که PHP تنظیمات INI_PERDIR مینامد: «میتوان آنها را در php.ini، .htaccess، httpd.conf یا .user.ini تنظیم کرد» و نه هیچ جای دیگر. memory_limit حجم فایل را محدود نمیکند، اما وردپرس برای ساختن نسخههای کوچکشده تصاویر بزرگ به حافظه نیاز دارد، پس یک آپلود بزرگ ممکن است بعد از رسیدن با خطای تمام شدن حافظه شکست بخورد.
مرحله 3: محدودیت را در جای درست برای هاست خود افزایش دهید
| نوع سرور شما | کجا تنظیم کنید | نکتهها |
|---|---|---|
| سرور مجازی (VPS) یا اختصاصی | همان php.ini که PHP شما واقعا بارگذاری میکند | بعد از آن PHP-FPM یا Apache را ریاستارت کنید |
| هاست اشتراکی با PHP-FPM یا FastCGI | .user.ini در پوشه اصلی وردپرس | اعمال شدنش ممکن است تا 5 دقیقه طول بکشد |
| Apache با PHP بهصورت ماژول (mod_php) | .htaccess با php_value | زیر PHP-FPM یا FastCGI خطای 500 ایجاد میکند |
| هاست cPanel | Software > MultiPHP INI Editor | php.ini، .user.ini یا .htaccess را برایتان مینویسد |
| Nginx جلوی PHP | client_max_body_size در کنار مقادیر PHP | در غیر این صورت Nginx خطای 413 برمیگرداند |
| هاست وردپرس مدیریتشده | پنل یا پشتیبانی هاست | بسیاری از هاستها آپلود را در سطح پلتفرم محدود میکنند |
| سایت پشت Cloudflare | محدودیت آپلود خود Cloudflare | 100 MB در پلنهای Free و Pro |
php.ini (سروری که خودتان مدیریت میکنید)
اول فایل بارگذاریشده را پیدا کنید. یک فایل موقت با محتوای <?php phpinfo(); بسازید، آن را در مرورگر باز کنید، خط «Loaded Configuration File» را بخوانید و بعد فایل را پاک کنید. همان php.ini را ویرایش کنید:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
سپس PHP را ریاستارت کنید تا تغییر را بخواند. در PHP-FPM نام سرویس شامل نسخه است، برای مثال sudo systemctl restart php8.3-fpm روی Debian یا Ubuntu. با mod_php، Apache را ریاستارت کنید.
.user.ini (بیشتر هاستهای اشتراکی)
PHP فایلهای .user.ini را فقط وقتی میخواند که بهصورت CGI یا FastCGI اجرا شود، که PHP-FPM را هم شامل میشود. فایل .user.ini را در پوشهای که wp-config.php در آن است بسازید یا ویرایش کنید:
upload_max_filesize = 128M
post_max_size = 130M
PHP این فایلها را هر user_ini.cache_ttl ثانیه دوباره میخواند که پیشفرض آن 300 است. پیش از اینکه نتیجه بگیرید کار نکرده، پنج دقیقه صبر کنید، یا اگر میتوانید PHP-FPM را ریاستارت کنید.
.htaccess (فقط Apache با mod_php)
php_value upload_max_filesize 128M
php_value post_max_size 130M
راهنمای PHP این دستورها را برای PHP که بهصورت ماژول Apache اجرا میشود توضیح میدهد. اگر سایت شما بلافاصله بعد از ذخیره خطای 500 Internal Server Error نشان داد، PHP بهصورت FastCGI یا PHP-FPM اجرا میشود. خطها را حذف کنید و به جای آن از .user.ini استفاده کنید.
MultiPHP INI Editor در cPanel
در cPanel بخش Software > MultiPHP INI Editor را باز کنید، دامنه خود را انتخاب کنید و مقادیر را در Basic Mode تغییر دهید. طبق مستندات cPanel، حالت Basic Mode مقادیر را در فایلهای php.ini، .user.ini و .htaccess، هر جا که آن تنظیم پشتیبانی شود، ذخیره میکند، پس لازم نیست بدانید سرور شما از کدام استفاده میکند.
Nginx
Nginx حجم درخواست را پیش از اینکه PHP آن را ببیند بررسی میکند. وقتی درخواستی از client_max_body_size بزرگتر باشد، Nginx خطای 413 Request Entity Too Large برمیگرداند. مقدار پیشفرض 1m است. در بلوک server مقداری دستکم برابر با post_max_size اضافه کنید:
client_max_body_size 130M;
با sudo nginx -t && sudo systemctl reload nginx تست و بارگذاری مجدد کنید. در Apache تنظیم مشابه LimitRequestBody است که در هاستهای معمولی وردپرس بهندرت نیاز به تغییر دارد.
هاستهای مدیریتشده و Cloudflare
برخی هاستهای وردپرس مدیریتشده php.ini یا .user.ini شما را نادیده میگیرند و محدودیت را برای کل پلتفرم تعیین میکنند. اگر بعد از تغییر، سلامت سایت هنوز عدد قدیمی را نشان میدهد، از هاست خود بپرسید حداکثر چقدر است و آیا میتوانند آن را افزایش دهند.
اگر سایت از Cloudflare عبور میکند، Cloudflare محدودیت خودش را دارد. مستندات کش آن حداکثر حجم آپلود را 100 MB در پلنهای Free و Pro، 200 MB در Business و تا 5 GB در Enterprise ذکر میکند. هیچ تنظیم PHP نمیتواند از این عبور کند.
چرا wp-config.php کار نمیکند
بسیاری از مقالهها پیشنهاد میکنند این را به wp-config.php اضافه کنید:
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );
هر دو تنظیم INI_PERDIR هستند و مستندات PHP میگوید تنظیمات این حالت را نمیتوان با ini_set() تعیین کرد. علامت @ شکست را پنهان میکند، پس خطها بیخطر به نظر میرسند و هیچ چیزی را تغییر نمیدهند. چیزی که wp-config.php میتواند تغییر دهد حافظه است، چون memory_limit را همهجا میتوان تنظیم کرد:
define( 'WP_MEMORY_LIMIT', '256M' );
این کار وقتی تصاویر بزرگ هنگام پردازش شکست میخورند کمک میکند. اما حداکثر حجم فایل آپلود را تغییر نمیدهد.
مرحله 4: تغییر را تأیید کنید
صفحه رسانه > افزودن را دوباره بارگذاری کنید و ببینید حداکثر حجم فایل مقدار جدید شما را نشان میدهد یا نه. اگر نشان نمیدهد:
- بررسی کنید
post_max_sizeدستکم به اندازهupload_max_filesizeباشد. وردپرس کوچکتر را استفاده میکند. - مطمئن شوید فایلی را ویرایش کردهاید که PHP واقعا بارگذاری میکند.
php.iniدر پوشه اشتباه نادیده گرفته میشود. - بعد از تغییر
.user.iniپنج دقیقه صبر کنید یا PHP-FPM را ریاستارت کنید. - اگر عدد در وردپرس تغییر کرده اما آپلودها هنوز با 413 شکست میخورند، مانع در Nginx، پراکسی هاست یا Cloudflare است.
- اگر فایل به وردپرس میرسد و بعد با «خطای HTTP» شکست میخورد، دیگر مشکل از حجم نیست. راهنمای ما درباره خطای HTTP وردپرس هنگام آپلود تصویر علتهای رایج را توضیح میدهد.
محدودیت را چقدر بالا ببرید؟
آن را روی بزرگترین فایلی که واقعا لازم دارید آپلود کنید، با کمی فضای اضافه، تنظیم کنید و post_max_size را کمی بالاتر از upload_max_filesize نگه دارید. آپلودهای بزرگ زمان بیشتری هم میبرند، پس اگر فایلهای بزرگ روی اتصالهای کند به پایان مهلت میرسند، max_execution_time را افزایش دهید. برای فایلهای خیلی بزرگ مثل ویدیوهای طولانی یا آرشیوهای پشتیبان، آپلود از طریق SFTP یا با افزونه آپلود تکهتکه معمولا از یک آپلود عظیم در مرورگر قابلاعتمادتر است، و ممکن است محدودیت پلن Cloudflare مسیر مرورگر را از قبل منتفی کند.
وقتی هدف خود را میدانید، ابزار حداکثر حجم آپلود خطهای PHP متناظر را برایتان مینویسد. اگر سرور شما با Nginx کار میکند، خط Nginx این راهنما را خودتان اضافه کنید.
FAQ
پرسشها
چطور محدودیت فعلی آپلود را در وردپرس بررسی کنم؟
به رسانه > افزودن بروید. صفحه آپلود حداکثر حجم فایل را نشان میدهد. برای جزئیات بیشتر، ابزارها > سلامت سایت > اطلاعات را باز کنید و بخش مدیریت رسانه را گسترش دهید. آنجا حداکثر حجم فایل آپلودی، حداکثر حجم دادههای POST و حداکثر حجم مؤثر فایل، یعنی کوچکترِ این دو، نمایش داده میشود.
چرا وردپرس میگوید فایل آپلودشده از دستور upload_max_filesize در php.ini بزرگتر است؟
فایل از تنظیم upload_max_filesize در PHP بزرگتر است. وردپرس این محدودیت را تعیین نمیکند، بلکه آن را از PHP میخواند. upload_max_filesize و post_max_size را با هم در php.ini، .user.ini یا، روی Apache با mod_php، در .htaccess افزایش دهید. مقدار پیشفرض خود PHP برای upload_max_filesize فقط 2M است، هرچند بیشتر هاستها مقدار بالاتری میگذارند.
آیا میتوانم محدودیت آپلود را از wp-config.php افزایش دهم؟
نه. upload_max_filesize و post_max_size تنظیمات PHP_INI_PERDIR هستند که PHP فقط از php.ini، .htaccess، httpd.conf یا .user.ini میپذیرد. یک خط ini_set() در wp-config.php بدون خطا اجرا میشود و هیچ چیزی را تغییر نمیدهد. wp-config.php میتواند محدودیت حافظه وردپرس را بالا ببرد، اما حافظه چیزی نیست که حجم فایل را محدود کند.
چرا بعد از افزایش محدودیتهای PHP هنوز خطای 413 Request Entity Too Large میگیرم؟
چیزی قبل از PHP درخواست را رد میکند. در Nginx این کار را client_max_body_size انجام میدهد که مقدار پیشفرضش 1m است و با عبور از آن خطای 413 برمیگرداند. آن را در بلوک server افزایش دهید و Nginx را دوباره بارگذاری کنید. اگر سایت شما از Cloudflare عبور میکند، محدودیت آپلود پلن آن هم میتواند درخواست را پیش از رسیدن به سرور متوقف کند.
آیا post_max_size باید بزرگتر از upload_max_filesize باشد؟
باید دستکم برابر باشد و کمی بزرگتر بودن امنتر است. فایل همراه با بقیه دادههای فرم در یک درخواست POST فرستاده میشود، پس کل درخواست در post_max_size حساب میشود. وردپرس کوچکترِ این دو مقدار را محدودیت آپلود در نظر میگیرد، بنابراین اگر فقط upload_max_filesize را بالا ببرید، محدودیت همانجا که بود میماند.