What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
An upload succeeds only when every limit along its request path accepts it. On shared hosting, the limit that stops a file is often one you cannot raise yourself, so the fix starts with identifying which layer rejects the request. Changing the first upload setting you find rarely settles the problem.
Why the limit is lower than you expect
There is no universal shared-hosting upload maximum. The effective value depends on the host, the PHP version and configuration serving your site, the web server in front of PHP, account controls, and the application doing the upload. Many hosts set these values at server level. WordPress’s PHP guidance states that on shared hosting “those limits are usually set on a server level and you may not be able to modify them or increase them above a certain value” (WordPress Developer Handbook, last updated July 7, 2025).
As an Amazon Associate I earn from qualifying purchases.
cPanel’s PHP upload-limit article, dated April 11, 2026, uses a 2 MB default as its starting point. That figure describes cPanel’s documented example, not the setting on every shared host. Check the values your own site is actually running before assuming any particular number.
Map the request path
A file travels through several layers, and each can reject it with a different symptom. The table shows where each limit applies and what failure it typically produces.
| Layer | What it caps | Where it is usually set | Typical symptom |
|---|---|---|---|
| Application (WordPress, a forum, a plugin) | Its own maximum file size, which can differ from PHP’s value | The application’s settings or plugin options | An application-branded error; the file may never reach PHP |
upload_max_filesize |
One uploaded file | php.ini, MultiPHP INI Editor, or the host | PHP rejects the file; the application may show a generic “upload failed” message |
post_max_size |
The entire POST body, including the file and all other form fields | Same as above | The application receives empty $_POST and $_FILES, so the file appears to be missing |
memory_limit |
RAM the script can use, including while it processes the file | Same as above | A fatal error reporting allowed memory exhausted |
max_execution_time and max_input_time |
How long the script and input parsing may run | Same as above, or the host | A failure after a long transfer |
Web server or reverse proxy (Nginx client_max_body_size, Apache LimitRequestBody) |
Total request body size before PHP sees it | Server or host configuration | An HTTP 413 response, often a server-styled error page |
| Account quota and cPanel File Manager submission size | Disk space and the File Manager HTTP submission limit | cPanel File Manager settings or the account administrator | File Manager refuses the upload, sometimes with a quota-related message |
The PHP settings that get confused
Four PHP directives cause most of the confusion. Each controls a different part of the request, and raising one does not relax the others.
upload_max_filesize
This caps the size of a single uploaded file. PHP’s built-in default is 2M, as listed in the PHP manual’s core directives. When a file exceeds it, PHP discards the file and reports an upload-size error to the application, which often displays a generic failure message rather than the real cause.
post_max_size
This caps the complete POST body, so it must be large enough for the file plus the other form data in the same request. Its built-in default is 8M. WordPress documents that post_max_size should be greater than or equal to upload_max_filesize. If the body exceeds post_max_size, PHP empties $_POST and $_FILES, so the application can behave as though nothing was sent. That makes this one of the most misleading failures, because the error looks like a missing-file bug in the application.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallRank #2
memory_limit
This is not an upload cap. It limits the RAM a script can use while it processes the request. An application that resizes, scans, or converts an uploaded file can exhaust it even when both upload sizes are correct. The built-in default is 128M. Setting it equal to the file size is not automatically correct, because processing often needs more memory than the raw bytes, and a plan may not allow a high value.
Time limits
max_execution_time (built-in default 30 seconds) and max_input_time control how long a request may run. A slow connection can fail after a long transfer even when every byte limit is satisfied. Raise these only when timing or logs show a timeout and the host permits the change.
Why raising PHP values sometimes changes nothing
PHP never handles a request that the web server has already rejected. Nginx’s client_max_body_size limits the request body, and the Nginx core-module documentation states that “if the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is returned to the client.” The documented default is 1m, but a host may configure a different value.
Apache’s LimitRequestBody restricts total request-body size. It can be set in server, virtual-host, directory, or .htaccess contexts, subject to the server configuration and permissions. Apache’s documentation notes that the default changed in version 2.4.54, so the installed version matters when you compare behavior across servers.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →The easiest way to tell the layers apart is the response itself. A 413 page generated by the server, rather than PHP-style error text, usually means the cap sits upstream of PHP, and editing PHP values will not help.
Some hosts allow PHP directives in .htaccess through lines such as php_value upload_max_filesize 64M. Those lines work only when PHP runs as an Apache module. Under PHP-FPM or CGI, they typically cause a 500 Internal Server Error. If the site breaks after such an edit, remove those lines first.
Rank #4
Diagnose in this order
- Identify the upload path. Decide whether the file goes through WordPress or another PHP application, through cPanel File Manager, or through an FTP or SFTP client. Record the exact error text, the file size, and whether the failure is immediate or appears only after a long transfer. An immediate rejection usually points to a cap; a failure after a long wait points toward timeouts or resource limits.
- Read the effective values. In WordPress, open Media > Add New and note the maximum upload file size shown on that screen, then check Tools > Site Health > Info for PHP and server details. In cPanel, open MultiPHP INI Editor (usually in the Software section), select the domain or PHP version that actually serves the site, and read
upload_max_filesize,post_max_size,memory_limit,max_execution_time, andmax_input_time. Confirm the selection matches the live site, because a different PHP version may be serving it. On a server with shell access,php -i | grep -E 'upload_max_filesize|post_max_size|memory_limit|max_execution_time'reports the command-line PHP configuration only, which can differ from the one the web server uses. - Align PHP settings conservatively. If the control is available, set
upload_max_filesizeto the per-file ceiling you need, then setpost_max_sizehigher to leave room for form fields. Keepmemory_limitsufficient for processing. Change one value at a time and retest after each change, so you know which change mattered. - Check upstream request-body limits. If the PHP values are high but the request still fails, look for a server-generated 413 page or the upstream limits described above. Ask the host which layer applies.
- Check quota and temporary capacity. For File Manager, check the Max HTTP submission size and the remaining account quota. For website uploads, processing may need temporary disk space. If the PHP values look correct and the failure suggests storage exhaustion, ask the host to check.
- Escalate with evidence. When the setting is not yours to change, use the checklist below.
Set values safely
cPanel’s PHP upload-limit article advises that post_max_size be at least as large as upload_max_filesize, and that memory_limit be at least as large as post_max_size. Its MultiPHP INI Editor documentation is stricter, stating: “We strongly recommend that you set this value larger than the upload_max_filesize value and smaller than the memory_limit value.” That sentence describes post_max_size. Where the two sources differ, aim for the stricter WHM wording: a post_max_size comfortably above upload_max_filesize, and a memory_limit above post_max_size.
As an illustration only, a 64 MB per-file ceiling could use upload_max_filesize 64M, post_max_size 80M, and memory_limit 256M, provided your plan permits the memory value. The cPanel article also states a 2 GB maximum for the variables in its procedure. Treat that as the documented ceiling for those variables, not as proof that your plan allows uploads of that size.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →File Manager uploads and quota
File Manager is a separate path from PHP website uploads. cPanel’s File Manager article, dated May 22, 2026, describes a Max HTTP submission size setting and a default requirement that 5 MB of quota space remain after the upload. An account administrator can adjust that requirement. A File Manager failure with correct PHP values therefore points to submission size or quota, not to the PHP upload settings. A full account quota blocks uploads regardless of how the limits are set.
Best Value
Escalate to the host with specific evidence
When a value is locked or the cap sits at server level, a precise support request gets a faster answer. Include:
- The exact file size in bytes or MB, and the page or endpoint where the upload was attempted.
- The timestamp, with time zone, of a failed attempt.
- The error text or HTTP status, such as 413 or 500.
- The active PHP version and the values you read in step 2.
- Whether the failure was immediate or came after a long transfer.
- A direct question: which layer rejects the request, and whether your plan allows a higher cap.
If the host confirms a firm limit, a host-approved alternative such as SFTP can move large files without going through the web upload form. That changes the transfer route only. It does not change storage quota or the host’s rules.
When a plan change is the right answer
Consider a different plan when:
- The host confirms that the cap is set at server level and cannot be raised for your plan.
- The per-file size you need is consistently above what the host will allow.
- Your control panel hides the PHP settings you need, and the host will not change them for you.
Compare plans on the published upload and request limits, whether PHP directives are editable in the panel, support response for server-level changes, storage quota, and supported transfer methods such as SFTP. A higher-priced plan does not automatically fix an upload problem, so confirm the published limits with the provider before moving a site.
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.




