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

PHP 8.1升级后move_uploaded_file失效,tmp_name为空报Error 6

解决PHP 8.1中move_uploaded_file报错Error 6(tmp_name为空)的问题

首先明确,Error 6对应PHP内置的UPLOAD_ERR_NO_TMP_DIR错误,核心原因是PHP无法找到或访问上传临时文件的存储目录。结合你描述的tmp_name为空、文件size为0的现象,可按以下步骤排查修复:

  • 检查PHP临时目录配置
    查看php.ini中的upload_tmp_dir参数,确认它指向的目录存在且PHP进程拥有读写权限:

    1. 执行phpinfo()找到upload_tmp_dir的实际配置值
    2. 验证目录存在性:Linux用ls -d [目录路径],Windows直接在文件管理器中查看
    3. 检查权限:Linux下目录权限至少为700,且所属用户与PHP运行用户(如www-data)一致;Windows确保Web服务进程(IIS/Apache)有该目录的读写权限
  • 避免临时目录被自动清理
    若upload_tmp_dir指向系统临时目录(如/tmp),可能被服务器定时任务自动清理。可将其修改为自定义的、不会被清理的目录,修改php.ini后重启Web服务。

  • 排查进程与安全模块限制
    若使用PHP-FPM,需确保FPM进程用户对临时目录有读写权限。部分服务器的SELinux安全模块可能阻止PHP访问临时目录,可临时执行setenforce 0关闭测试,若问题解决,再配置SELinux规则允许访问。

  • 验证上传表单属性
    确认文件上传表单包含enctype="multipart/form-data"属性,缺少该属性会导致PHP无法正确解析上传文件,出现tmp_name为空的情况。

  • 关于PHPExcel的特殊说明
    你提到PHPExcel能手动获取数据,是因为它可能直接读取了原始POST数据,绕过了临时文件存储步骤;但move_uploaded_file必须依赖有效的临时文件路径,所以核心仍需解决临时目录的访问问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:05:26