You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP上传大文件时无法获取临时路径,仅≤2MB文件正常

解决大文件上传时无法获取临时路径的问题

你的问题核心是PHP默认的上传大小限制导致的,2MB刚好是PHP默认的upload_max_filesize值,以下是具体排查和解决步骤:

1. 检查PHP上传相关配置参数

你需要确认并修改php.ini中的几个关键参数:

  • upload_max_filesize:控制单个上传文件的最大大小,默认2M,你需要改到实际需要的值(比如10M)
  • post_max_size:控制整个POST请求的最大大小,必须大于upload_max_filesize(比如12M)
  • memory_limit:可选,确保PHP有足够内存处理大文件,建议设置为比post_max_size大(比如16M)
  • max_execution_time:可选,大文件上传耗时更长,适当延长执行时间(比如60)

2. 查看当前配置值

可以通过两种方式查看当前生效的参数:

  • 在PHP脚本中添加phpinfo();,访问页面后搜索上述参数
  • 命令行执行:
    php -i | grep -E "upload_max_filesize|post_max_size|memory_limit"
    

3. 修改php.ini并重启服务

Ubuntu下PHP 8.2的php.ini通常位于/etc/php/8.2/apache2/php.ini(Apache环境)或/etc/php/8.2/fpm/php.ini(Nginx+FPM环境):

  1. 编辑文件:
    sudo nano /etc/php/8.2/apache2/php.ini
    
  2. 找到对应参数并修改,比如:
    upload_max_filesize = 10M
    post_max_size = 12M
    memory_limit = 16M
    max_execution_time = 60
    
  3. 重启web服务:
    sudo systemctl restart apache2
    # 如果是FPM环境则执行:sudo systemctl restart php8.2-fpm
    

4. 检查上传错误码

在处理上传前,一定要检查$_FILES['file']['error'],它能告诉你具体失败原因:

if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
    switch ($_FILES['file']['error']) {
        case UPLOAD_ERR_INI_SIZE:
            echo '文件大小超过php.ini限制';
            break;
        case UPLOAD_ERR_FORM_SIZE:
            echo '文件大小超过表单MAX_FILE_SIZE限制';
            break;
        default:
            echo '上传失败,错误码:' . $_FILES['file']['error'];
    }
    exit;
}
// 后续处理逻辑
$file_tmp = $_FILES['file']['tmp_name'];
// ...

额外注意

  • 如果你的表单里设置了MAX_FILE_SIZE隐藏字段,确保它的值不小于你设置的upload_max_filesize
  • 检查服务器磁盘空间,临时目录(默认是系统临时目录)要有足够空间存放上传文件

内容的提问来源于stack exchange,提问作者miguel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:46:13