博客 / WordPress/ WordPress 文件上传大小限制错误:三种主流解决方案详解

WordPress 文件上传大小限制错误:三种主流解决方案详解

在 WordPress 后台进行媒体文件上传时,如果遇到“文件大小超过限制”的错误提示,通常是由于服务器 PHP 配置对上传文件大小、POST 数据大小或脚本执行时间进行了限制。本文将系统性地介绍三种主流且有效的解决方案,帮助你一劳永逸地解决此问题。

解决方案概览

解决 WordPress 上传限制,核心是修改 PHP 的运行时配置。主要途径有三种,你可以根据自己对服务器的控制权限和熟悉程度来选择:

  • 修改 WordPress 主题函数文件:最方便、对服务器无侵入性的方法。
  • 修改服务器配置文件(.htaccess 或 php.ini):效果最彻底,但需要服务器相应支持。
  • 通过主机控制面板修改:最直观,适合使用宝塔、cPanel 等面板的用户。

方法一:修改 WordPress 主题函数文件(推荐)

这是最安全、最便捷的方法,无需直接修改服务器文件,且修改会随着主题生效。将以下代码添加到当前使用主题的 functions.php 文件末尾即可。

// 提高 WordPress 上传限制
@ini_set('upload_max_filesize', '64M');
@ini_set('post_max_size', '64M');
@ini_set('max_execution_time', '300');
@ini_set('max_input_time', '300');

参数说明:

  • upload_max_filesize: 单个上传文件的最大允许大小。
  • post_max_size: 通过 POST 请求可提交的最大数据量(必须大于或等于 upload_max_filesize)。
  • max_execution_time: 脚本最大执行时间(秒),上传大文件时需要更长时间。
  • max_input_time: 脚本解析输入数据(如 POST 数据)的最大时间(秒)。

优点: 操作简单,不影响服务器其他站点,更换主题时需重新添加。
注意: 如果服务器主配置中相关参数设置得过低,此方法可能无效。

方法二:修改服务器配置文件

此方法直接修改服务器 PHP 配置,效果全局且彻底。根据你的服务器类型(Apache 或 Nginx)操作不同。

对于 Apache 服务器(使用 .htaccess 文件)

如果你的网站运行在 Apache 服务器上,并且支持 .htaccess 文件覆盖 PHP 配置,可以在 WordPress 安装根目录下的 .htaccess 文件中,在“# BEGIN WordPress”规则之前添加以下代码:

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

重要提示: 请确保添加在 WordPress 自身的重写规则之外,通常放在文件最顶部或 # BEGIN WordPress 注释之前,以避免规则冲突。如果根目录没有 .htaccess 文件,可以新建一个纯文本文件,命名为 .htaccess,粘贴上述代码后上传。

对于 Nginx 服务器

Nginx 服务器不支持 .htaccess,也无法通过 php_value 指令修改 PHP 设置。你需要直接修改服务器上的 PHP 配置文件(通常是 php.ini)或网站的 Nginx 虚拟主机配置。

  1. 找到 php.ini 文件:可以通过在网站目录创建 phpinfo() 文件来查找“Loaded Configuration File”的路径。
  2. 修改 php.ini:找到并修改以下参数:
    upload_max_filesize = 64M
    post_max_size = 64M
    max_execution_time = 300
    max_input_time = 300
  3. 重启 PHP 服务:修改保存后,需要重启 PHP-FPM 或 Web 服务器(如 Nginx)使配置生效。

方法三:通过主机控制面板修改(以宝塔面板为例)

对于使用宝塔面板、cPanel、Plesk 等图形化控制面板的用户,这是最直观的方法。

  1. 登录宝塔面板,进入【网站】列表。
  2. 找到你的 WordPress 站点,点击右侧的【设置】。
  3. 切换到【PHP 版本】选项卡,你会看到当前使用的 PHP 版本,点击右侧的【设置】按钮。
  4. 在弹出的 PHP 配置界面中,找到【配置修改】选项。
  5. 在打开的 php.ini 编辑器中,使用 Ctrl+F 搜索并修改以下参数:
    upload_max_filesize = 64M
    post_max_size = 64M
    max_execution_time = 300
    max_input_time = 300
  6. 点击保存,并重启 PHP 服务。

故障排查与注意事项

  • 顺序检查:建议按“方法一 → 方法三/方法二”的顺序尝试,优先使用对服务器影响最小的方案。
  • 参数一致性:确保 post_max_size 的值大于或等于 upload_max_filesize
  • 单位注意:配置中的“M”代表兆字节,务必使用大写字母。
  • 修改无效? 如果以上方法均无效,可能是主机服务商在更高层级做了硬性限制,需要联系你的主机提供商客服申请提高限制。
  • 安全提醒:过高的 max_execution_time 和文件大小限制可能带来安全风险,请根据实际需要设置合理的值。

通过以上任何一种方法,你都可以有效解决 WordPress 上传文件时的大小限制问题。选择最适合你运维环境的方法进行操作即可。