WordPress file upload limit is not composed of a single setting. It involves upload_max_filesize, post_max_size, memory_limit, execution time, Nginx body limit, temporary directory, disk space, and MIME security working together. This guide explains how to find the real limit and set it up correctly.
The uploaded file exceeds the upload_max_filesize directive in php.ini
413 Request Entity Too Large
HTTP error
Missing a temporary folder
Record the single file size limit with upload_max_filesize, and the total POST request limit with post_max_size. If the web server or proxy applies a lower body limit, a 413 error may occur before PHP is reached.
If post_max_size is smaller than upload_max_filesize, large files may not reach PHP and WordPress may not be able to provide meaningful error messages. memory_limit is also important during image processing.
PHP setting changed in cPanel or Plesk panel must be applied only to the handler used by the domain. CLI php.ini should not be changed assuming the same as web PHP.
Image is loading but HTTP error occurs in thumbnail production, check file size, pixel size, Imagick/GD, memory and temporary directory.
SVG and some file types being disallowed is not a upload limit, but MIME security behavior. Opening unknown file types by just adding extension is risky.
It is healthier in terms of backup and disk management to use suitable object storage or a video platform for large media files instead of uploading video archives to WordPress.
Search for the phrase you see in the email, browser, or SSH log. Each card includes meaning, probable cause, and safe initial action.
Meaning: File has exceeded the single file limit of PHP.
Possible cause: Low upload_max_filesize or incorrect ini file.
Meaning: The web server/proxy request has been rejected before reaching PHP.
Possible cause: Nginx client_max_body_size or proxy limit.
Meaning: The form exceeds the HTML limit within it.
Possible cause: Theme/plugin form value.
Meaning: PHP upload_tmp_dir is not present or cannot be written.
Possible cause: Disk, permissions, or incorrect tmp path.
Meaning: WordPress has encountered a general media processing error.
Possible cause: Memory, Imagick, timeout or REST/AJAX issue.
Meaning: The MIME type is not accepted by WordPress.
Possible cause: Unsupported or misdetected MIME.
Meaning: Uploads directory cannot be created or written.
Possible cause: Incorrect ownership, permissions or disk full.
Meaning: The entire POST body exceeds the post_max_size value.
Possible cause: post_max_size is smaller than the upload limit.
No records matching this expression were found.
Commands are for root access. Collect only status and logs first; Do not change the permanent setting without seeing the reason.
php -r 'foreach(["upload_max_filesize","post_max_size","memory_limit","max_execution_time","upload_tmp_dir"] as $k) echo $k."=".ini_get($k).PHP_EOL;'
CLI shows values; compare web PHP with phpinfo or Site Health.
wp eval 'echo wp_max_upload_size(), PHP_EOL;'
Shows the maximum upload size calculated by WordPress in bytes.
df -h
df -i
php -r 'echo sys_get_temp_dir(), PHP_EOL;'
Displays disk, inode, and used temporary directory.
ls -ld wp-content wp-content/uploads
find wp-content/uploads -maxdepth 1 -printf '%m %u:%g %p\n'
Uploads directory ownership and permissions.
nginx -T 2>/dev/null | grep -n client_max_body_size | head -n 20
Displays Nginx defined request body limits.
file --mime-type DOSYA
Displays the file's actual MIME type regardless of extension.
The root cause of the WordPress error is the same, but log paths, PHP settings screens and service management vary depending on the hosting infrastructure used.
In cPanel, domain's PHP upload values are managed via MultiPHP INI Editor.
php -r 'echo ini_get("upload_max_filesize"), PHP_EOL;'The Plesk PHP Settings page applies upload and timeout values domain-wise.
cd /var/www/vhosts/ALANADI/httpdocs && wp eval 'echo wp_max_upload_size();'In a panel-less server, PHP-FPM, web server body limit, and tmp directory are separate layers.
php --ini && nginx -t 2>/dev/nullIdentify the error code, measure the actual web limits, and check the disk/tmp/permission and web server body limits in sequence.
413, PHP directive, MIME, or HTTP error message, record as is.
See the limit calculated by the application instead of the value written on the panel.
wp eval 'echo wp_max_upload_size();'post_max_size is larger than upload_max_filesize; memory_limit must be sufficient for processing.
If there is a 413 error, focus on the Nginx/Apache/proxy layer instead of PHP.
nginx -T 2>/dev/null | grep client_max_body_sizeCheck if new files and thumbnails can be created.
df -h && ls -ld wp-content/uploadsCompare the small and large files and verify that no new errors are logged.
File size, PHP limits, and WordPress disk space for unzip are checked.
The pixel size is reviewed for Imagick/GD, memory, and thumbnail operations.
Nginx/proxy body limit is blocking the request before PHP.
This is not a limit, but a MIME security issue; a reliable sanitization solution is required.
file --mime-type dosya.svgAlso, check the upload limit in Network Admin > Settings.
The web PHP setting used by the domain can be changed; cPanel MultiPHP INI, Plesk PHP Settings or php.ini/FPM override can be used.
The entire POST request exceeds the single file limit because it includes form fields outside of the file.
Generally, it comes from the Nginx proxy or web server body limit.
WordPress media processing may display different errors due to PHP, AJAX, Imagick, or permission issues with a general message; logging is required.
WordPress does not support SVG by default due to security reasons; it must be opened with a secure sanitize solution only.
Although small files are possible, object storage or a video platform is more suitable for large videos.
Yes; The site upload limit can be set by the network administrator.
By analyzing cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim and security layers together, we fix the root cause of the failure instead of just removing the service.