PHP enforces a handful of resource limits on every request: how much memory a script can use, how long it can run, and how big an uploaded file or form submission can be. Most "why did my import/upload/script just die" problems trace back to one of these. You can check and raise the upload and execution settings yourself from Services → your hosting → PHP tile. memory_limit works a little differently: check it with a phpinfo script first, and contact support if the plan default is too low for what you're running.
The four limits and what they actually gate
upload_max_filesize caps the size of a single uploaded file. post_max_size caps the entire POST request, meaning the uploaded file plus any other form fields sent alongside it, so it always needs to be equal to or larger than upload_max_filesize. Both default to 64MB. max_execution_time caps how many seconds a script is allowed to run before PHP kills it, independent of file size. memory_limit caps how much RAM a single PHP request can allocate while it runs, regardless of what triggered the request.
upload_max_filesize and post_max_size
These two work together and get confused constantly. If you raise upload_max_filesize to 200MB but leave post_max_size at 64MB, uploads still fail, because the request as a whole is rejected before PHP even looks at the individual file. Set them to the same value, or set post_max_size slightly higher. For the full walkthrough of raising these from the PHP tile, see Increasing the maximum file upload size. On shared and WordPress hosting these can typically go up to 256MB; if you need to move files larger than that, FTP/SFTP has no PHP-level limit at all.
max_execution_time
This one is about time, not size. A script that reads a small file but does something slow, like resizing a dozen images or making external API calls, can hit this limit even though the upload itself was tiny. The default is 30 seconds on most PHP installs. Combine a large file with processing work and you can hit both a size limit and a time limit in the same request. If you're seeing uploads that succeed on the transfer but then fail or time out during processing, raise max_execution_time to 120-300 seconds alongside your upload settings, from the same PHP options page.
memory_limit
Memory is the one limit that isn't about the file at all. It's how much RAM a single PHP process can use while executing your script: building an array, decoding a large JSON payload, resizing an image in memory, running a big WordPress plugin. A script can fail on memory even with a tiny upload if it does something memory-hungry with the data afterward.
To see your current limit, create a file with , load it in a browser, and search the page for memory_limit. If you're hitting a hard cap and need it raised, contact support with the phpinfo output and what you're trying to run. They can confirm the current limit for your plan and adjust it where that's possible.
Symptoms by limit
- upload_max_filesize too low: the upload fails immediately, often with a browser or plugin error mentioning file size before the transfer even completes.
- post_max_size too low: the file appears to upload but arrives empty or triggers a generic "no file" error, because PHP dropped the whole POST body, not just the file.
- max_execution_time too low: the upload completes, then the page hangs and eventually shows a timeout or 500 error, usually during processing, not during the transfer.
- memory_limit too low: a white screen, a 500 error, or an explicit "Allowed memory size exhausted" message in your error log, usually while the script is doing something after the upload rather than during it.
WordPress-specific notes
WordPress reads PHP's upload limit and displays it in the Media Library, but only once per page load, so if you raise the limit and the old number still shows, refresh or open a new tab. Some plugins, especially security and backup plugins, layer their own upload limits on top of PHP's; if uploads still fail after raising PHP's settings, check those plugin settings too. If you're routinely bumping into these limits rather than hitting them occasionally, it's worth checking your overall resource footprint via Checking your hosting resource usage, since sustained heavy processing can also show up as CPU or memory pressure elsewhere on the account.
When to contact support
Raising upload_max_filesize, post_max_size, and max_execution_time from the PHP tile takes effect within seconds with no restart needed, so most of this you can handle yourself. Open a ticket from Support → New ticket in the portal when you need memory_limit raised beyond what's available to you, when a large import or migration needs a temporary bump across multiple settings at once, or when you've raised everything available and a script still fails. Support is real people, not a queue behind a phone tree, and they can tell you exactly what your plan allows before you spend time troubleshooting a ceiling you can't move yourself.