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

使用PHP上传MP4视频时部分文件提示未选择文件该如何排查

PHP视频上传部分文件提示"No File Selected"问题排查及解决方案

问题核心原因

你认为该问题与php.ini配置无关属于认知错误:PHP对上传文件的解析处理发生在业务代码执行前,只要文件大小、请求大小超过服务端阈值,PHP内核会直接丢弃上传的文件数据,你在代码中获取到的就是处理后的空$_FILES结果,自然会触发你写的"No File Selected"提示。
常见触发原因如下:

  • 服务端PHP配置限制:php.ini中的upload_max_filesize、post_max_size参数值小于你上传的6MB文件,导致文件被直接丢弃
  • Web服务器配置限制:Nginx默认client_max_body_size为2MB、Apache默认LimitRequestBody也有大小限制,超过阈值后会直接截断POST请求,后端PHP接收不到完整的文件数据
  • 文件名编码问题:无法上传的文件名包含中文、特殊符号或空格,部分低版本服务端环境编码不兼容导致文件解析失败
  • 上传超时限制:max_input_time、max_execution_time参数值过小,大文件上传还没完成就被服务端强制终止请求

排查步骤

1. 完善错误判断逻辑,获取具体错误信息

替换你的PHP代码为以下内容,可直接打印出具体的错误原因:

// 开启所有错误提示
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 打印原始请求数据便于排查
var_dump($_POST);
var_dump($_FILES);
var_dump(error_get_last());

$uploadErrors = [
    UPLOAD_ERR_INI_SIZE => '文件大小超过php.ini配置的upload_max_filesize限制',
    UPLOAD_ERR_FORM_SIZE => '文件大小超过表单MAX_FILE_SIZE限制',
    UPLOAD_ERR_PARTIAL => '文件仅部分上传完成',
    UPLOAD_ERR_NO_FILE => '未检测到上传的文件',
    UPLOAD_ERR_NO_TMP_DIR => '服务端缺少临时存储目录',
    UPLOAD_ERR_CANT_WRITE => '磁盘无写入权限',
    UPLOAD_ERR_EXTENSION => 'PHP扩展拦截了文件上传',
];

if(!isset($_FILES['file'])) {
    echo "错误:未接收到文件参数,通常是请求总大小超过服务端限制";
} elseif ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
    echo "上传失败:" . ($uploadErrors[$_FILES['file']['error']] ?? '未知错误,错误码:' . $_FILES['file']['error']);
} else {
    echo "上传成功,文件信息:";
    print_r($_FILES);
}

2. 核对PHP核心配置

新建phpinfo文件,访问查看以下参数值是否符合你的上传需求:

  • upload_max_filesize:单文件最大上传大小,建议设置为要上传的最大视频的1.2倍以上
  • post_max_size:POST请求总大小,必须大于upload_max_filesize
  • max_input_time:请求接收最大时长,大文件上传建议设置为300秒以上
  • max_execution_time:PHP脚本最大执行时长,建议和max_input_time保持一致
  • memory_limit:脚本内存限制,建议设置为128M以上

3. 核对Web服务器配置

  • Nginx环境:在nginx.conf或站点配置文件中添加/修改client_max_body_size 20M;(根据你的需求调整大小),修改后执行nginx -s reload重载配置
  • Apache环境:检查站点配置中的LimitRequestBody参数,以及.htaccess中的php_value post_max_size、php_value upload_max_filesize配置是否符合要求

4. 特殊字符处理

如果排查后发现是文件名编码问题,建议前端上传前将文件名转成英文字母、数字组合的格式,或统一将服务端字符集设置为UTF-8。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:03