修改 php.ini 中的 upload_max_filesize 和 post_max_size 参数即可解决上传超限问题,独立服务器需重启 PHP 服务生效,虚拟主机可能无法直接修改。
先说结论:独立服务器直接修改配置文件并重启服务,虚拟主机需联系服务商或使用 .user.ini
- 适合:拥有服务器 root 权限或独立 PHP 环境
- 先准备:确认 php.ini 路径和当前 PHP 版本
- 验收:通过 phpinfo() 页面确认参数已变更
命令速用版
通过命令行快速定位配置文件路径并重启服务。
php `--ini` | grep "Loaded Configuration File"
systemctl restart php-fpm
如果是 Apache 环境,使用 service apache2 restart 重启。
为什么会这样
PHP 默认限制上传文件大小以防止服务器资源被滥用。
upload_max_filesize 控制单个文件上传大小,post_max_size 控制 POST 请求总数据量。主题文件通常超过默认限制,导致上传被拦截。
分步处理
1. 查找 php.ini 路径:执行 php `--ini` 命令查看 Loaded Configuration File 指向的文件。
2. 修改配置参数:使用编辑器打开文件,搜索 upload_max_filesize 和 post_max_size,将值改为大于主题包的大小,例如 64M。
3. 重启 PHP 服务:修改 ini 文件后必须重启 PHP-FPM 或 Web 服务器才能生效。
4. 回滚提醒:修改前备份原配置文件,以便出错时恢复。
怎么验证是否生效
在网站根目录创建 phpinfo.php 文件,写入 <?php phpinfo(); ?>,浏览器访问该页面搜索 upload_max_filesize 确认新值。
检查完成后删除 phpinfo.php 文件以防信息泄露。
常见坑
post_max_size 必须大于或等于 upload_max_filesize,否则上传会失败。
Nginx 服务器还需修改 client_max_body_size 参数,否则请求会被 Nginx 拦截。
虚拟主机通常禁止修改 php.ini,需尝试 .user.ini 或联系主机商。
常见问题
修改后为什么没有生效?
没有重启 PHP 服务或修改了错误的 php.ini 文件路径。
虚拟主机怎么修改上传限制?
尝试在根目录创建 .user.ini 文件写入配置,或直接联系主机服务商调整。
upload_max_filesize 和 post_max_size 有什么区别?
前者限制单个文件大小,后者限制整个 POST 请求数据总量,包含文件和其他表单数据。
参考来源
PHP Official Documentation - ini.core.php
https://www.php.net/manual/en/ini.core.php