When WordPress accepts only files up to 2MB on an Nginx server, the restriction is usually enforced by one of three layers: Nginx, PHP-FPM, or WordPress Multisite. Changing only php.ini will not fix an Nginx 413 response, and changing only Nginx will not raise PHP’s per-file limit.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
Raise the limits in the correct order: set Nginx’s client_max_body_size high enough for the complete request, set PHP’s upload_max_filesize for the individual file, set post_max_size at least as high with room for multipart overhead, and keep memory_limit larger than post_max_size. Then reload the services, verify the values WordPress sees, and check the Multisite network ceiling if applicable.
As an Amazon Associate I earn from qualifying purchases.
Recommended Free Tools
Why WordPress shows a 2MB upload limit
2MB is not a universal WordPress limit. It is the effective value exposed by the server and PHP configuration serving your site. A host may have chosen 2MB as a default, or one layer may be set to 2MB while the others allow more.
An upload travels through the stack in this order:
- Nginx receives the HTTP request. It can reject an oversized request before PHP runs.
- PHP-FPM parses the request.
upload_max_filesizeapplies to one uploaded file, whilepost_max_sizeapplies to the entire POST request. - WordPress reports the smaller of those two PHP values as its PHP upload ceiling.
- WordPress Multisite can impose an additional network-level maximum and a per-site storage allowance.
The practical result is that the usable limit is the lowest ceiling in the path. A larger value in one file does nothing if another layer remains lower.
#1 Best Overall
- [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
- [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
- [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
- [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
- [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
How the limits interact
| Layer | Setting | What it limits | Where it is changed |
|---|---|---|---|
| Nginx | client_max_body_size |
The complete HTTP request body before PHP receives it | Nginx http, server, or location configuration used by the site |
| PHP | upload_max_filesize |
One individual uploaded file | The PHP configuration loaded by the site’s PHP-FPM pool |
| PHP | post_max_size |
The complete POST request, including the file and multipart fields | The same PHP-FPM configuration |
| PHP | memory_limit |
Memory available while PHP processes the request | The PHP-FPM configuration |
| WordPress | PHP upload ceiling | The smaller of upload_max_filesize and post_max_size |
Calculated by WordPress from the PHP values |
| WordPress Multisite | Max upload file size | A network-wide maximum for uploads | Network Admin → Settings → Network Settings |
PHP requires post_max_size to be greater than or equal to upload_max_filesize. Because a POST contains more than the raw file bytes, give post_max_size room for multipart request overhead and any additional POST fields. For large requests, WordPress documents the relationship as memory_limit larger than post_max_size, which in turn is larger than upload_max_filesize.
Before changing anything: identify the configuration that is actually active
Editing a file that is not used by the live request is the most common reason a limit appears unchanged. Establish the active path first.
- Check the current value in WordPress. Open the Media upload interface and note the maximum file size it reports. Site Health can also show the PHP environment used by WordPress.
- Identify the Nginx server block. Determine which virtual host handles the domain and whether the relevant directive is inherited from an
http,server, orlocationcontext. The setting must be in the configuration scope used for this site. - Identify the PHP-FPM pool. Confirm which PHP-FPM service and pool process the site’s requests. A machine can have more than one PHP version or pool, each with different configuration files.
- Record the existing values. Keep the current Nginx body-size setting and the PHP values for
upload_max_filesize,post_max_size, andmemory_limitbefore editing. This gives you a rollback point and makes it easier to spot a value loaded from another file. - Check whether the site is Multisite. If it is, plan to inspect Network Admin after the server changes; the network setting can remain lower than both Nginx and PHP.
Step 1: raise Nginx’s request-body ceiling
Nginx’s client_max_body_size controls the size of the request body it will accept. If the request exceeds this value, Nginx can terminate it before PHP-FPM receives anything. WordPress therefore cannot override this limit from the dashboard.
- Open the Nginx configuration for the virtual host that serves WordPress.
- In the applicable
http,server, orlocationcontext, add or change the directive:
client_max_body_size <target-size>;
Replace <target-size> with the maximum complete request you intend to accept, using the size notation supported by your Nginx configuration. Set it high enough for the file plus multipart overhead and any other POST fields; setting it exactly equal to the individual file size can still reject a request that is slightly larger on the wire.
Rank #2
- 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
- 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
- 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
- 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
- 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
- Keep the directive in the server block or location that actually handles the WordPress request. Adding it to an unused virtual host will have no effect.
- Validate the Nginx configuration with the configuration-test option provided by your installation before reloading the service. If the test reports a syntax or include-file error, correct that first.
A 413 “Request Entity Too Large” response is the strongest clue that this layer is still too low. Start by inspecting client_max_body_size before changing PHP when that response appears.
Step 2: set the PHP-FPM upload and POST limits
PHP applies two different size controls. upload_max_filesize is the maximum size of a single uploaded file. post_max_size is the maximum size of the complete POST request. The latter must be at least as large as the former and should include room for request overhead.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems- Open the PHP configuration used by the active PHP-FPM pool, not merely the command-line PHP configuration on the server.
- Set
upload_max_filesizeto the largest individual file the site should accept. - Set
post_max_sizeto at least that value, with additional room for multipart encoding and other POST fields. - Set
memory_limithigher thanpost_max_sizewhen processing large uploads, following WordPress’s documented relationship.
upload_max_filesize = <file-size>
post_max_size = <request-size>
memory_limit = <larger-memory-size>
The values in this example are variables, not literal settings. Choose values based on the files your site needs to receive and the memory available to the application. Do not set post_max_size below upload_max_filesize; WordPress will report the smaller effective value.
The error text “The uploaded file exceeds the upload_max_filesize directive in php.ini” points specifically to the individual-file setting. Verify the PHP-FPM configuration actually loaded by the web request, because changing a different PHP version or pool leaves the live value unchanged.
Rank #3
- [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
- [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
- [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
- [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
- [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
Step 3: reload the services safely
Nginx and PHP-FPM must reread their configuration before the new values can affect requests. The exact service names and commands depend on the operating system, PHP version, init system, and hosting panel.
- Use your service manager’s reload operation for Nginx after its configuration test succeeds.
- Reload or restart the PHP-FPM service that owns the active pool. The service may be version-specific on your system.
- If a hosting control panel manages these services, apply the change through that panel or its documented restart controls rather than assuming a distribution command will work.
- Watch the service result for errors. A failed reload means the old configuration remains in service, or the web server may be unavailable until the syntax problem is fixed.
Illustrative commands such as sudo systemctl reload nginx are not universal. Substitute the service names and operation required by your environment; do not restart an unrelated PHP version and assume the site has changed.
Step 4: verify what WordPress now sees
Verification must happen through the same web request path that performs the upload. Checking only a shell command or an editor’s saved file can produce a false success.
- Return to the WordPress Media upload screen and read the displayed maximum upload size.
- Check Site Health for the PHP values exposed to WordPress, if that information is available in your installation.
- Compare the reported PHP values. WordPress uses the smaller of
upload_max_filesizeandpost_max_size, so raising only one cannot raise the displayed ceiling. - Upload a test file just below the intended ceiling. A file just below the limit tests the complete path without relying on a borderline request that may exceed the limit because of overhead.
- If the displayed value is unchanged, recheck the active Nginx server block, the PHP-FPM pool, and the service reload result. The most likely explanation is that a different configuration is serving the request.
Test with a non-sensitive file and remove it afterward if the site does not need it. The purpose is to verify the configured path, not to leave a large test asset in the media library.
Rank #4
- Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
- Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
- All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
- Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
- Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
WordPress Multisite: remove the network-level ceiling
On Multisite, server-side values are only part of the decision. Network administrators can set a maximum upload file size and a site upload-space allowance in the dashboard.
- Sign in as a network administrator.
- Open Network Admin → Settings → Network Settings.
- Inspect Max upload file size. Raise it if it is lower than the Nginx and PHP values you intend to allow.
- Check Site upload space as well. A site can fail to accept media because its allotted storage is exhausted even when the per-file limit is sufficient.
- Save the settings, return to the site’s Media screen, and repeat the small test upload.
The network maximum cannot make a server-side limit larger. It can only impose an additional lower ceiling, so check it after confirming Nginx and PHP.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Troubleshooting by symptom
| Symptom | Most likely enforcing layer | Checks and corrective action |
|---|---|---|
| HTTP 413 or “Request Entity Too Large” | Nginx | Inspect client_max_body_size in the active http, server, or location context. Validate and reload the Nginx configuration. |
| “The uploaded file exceeds the upload_max_filesize directive in php.ini” | PHP individual-file setting | Raise upload_max_filesize in the PHP-FPM configuration serving the request, then reload or restart that PHP-FPM service. |
| WordPress still displays a lower value after editing PHP | PHP relationship or inactive configuration | Compare upload_max_filesize and post_max_size. WordPress reports the smaller one. Confirm that the edited pool and PHP version are the active web configuration. |
| The size appears correct but processing fails | PHP resources or another operational limit | Confirm that memory_limit is larger than post_max_size and inspect the PHP-FPM and web-server error logs. The documented relationship does not establish one universal timeout value for every server. |
| Only a Multisite site remains lower | Network settings | Check Network Admin → Settings → Network Settings for Max upload file size and Site upload space. |
| No setting changes after a reload | Wrong file, scope, pool, or service | Identify the live Nginx server block and PHP-FPM pool again, test configuration syntax, and confirm the reload or restart targeted those services. |
Choosing values without creating a new bottleneck
Start with the largest individual file the editorial or operational workflow genuinely requires. Then work outward through the request path:
- Set
upload_max_filesizeto cover that one file. - Set
post_max_sizeat least as high, with headroom for multipart overhead and other form fields. - Set Nginx’s
client_max_body_sizehigh enough for the complete POST request, not just the raw file. - Keep
memory_limitlarger thanpost_max_sizefor large-request processing. - On Multisite, make sure the network maximum is not lower than the server-side values.
There is no benefit in making one layer dramatically larger while another remains lower. Conversely, setting every value to the same number can leave no room for request overhead. The useful configuration is a deliberate chain in which the request ceiling accommodates the complete request, the PHP POST ceiling accommodates that request, and the individual-file ceiling describes the file itself.
Best Value
When you cannot edit Nginx or PHP
Shared-hosting accounts may prevent customers from changing Nginx configuration or the PHP-FPM settings that govern the web request. A local php.ini file or a dashboard field cannot override a host-controlled Nginx ceiling, and WordPress cannot bypass a request rejected before PHP runs.
Ask the host to raise both the Nginx request-body limit and the PHP values, and provide the individual-file size you need. Ask them to confirm which PHP-FPM pool and Nginx virtual host serve the domain. If the host cannot provide the required limits, moving the site to a managed WordPress hosting or Nginx hosting support arrangement where those layers are administrable is the practical alternative.
Rollback and safety checks
- Keep a copy of the original Nginx and PHP-FPM configuration before editing.
- Change one layer at a time when diagnosing a failure, so the resulting behavior identifies the enforcing layer.
- Run the Nginx configuration test before every reload.
- Use the active web request to verify PHP values; command-line PHP may use a different configuration.
- Do not expose diagnostic configuration pages publicly. Remove temporary diagnostics after checking the values.
- After a successful test upload, review the media library and server logs for processing errors rather than assuming a completed HTTP request means the file was usable.
The shortest reliable fix
For a single-site installation you control, the reliable sequence is: identify the live Nginx server block and PHP-FPM pool; raise client_max_body_size; raise upload_max_filesize; set post_max_size at least as high with overhead; keep memory_limit larger than post_max_size; reload the correct services; and verify the value and a near-limit test upload in WordPress. For Multisite, also raise the network’s Max upload file size when it is the lower ceiling.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




