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

PHP7.4文件上传报错Missing a temporary folder(缺失临时文件夹)解决求助

PHP 7.4 配置upload_tmp_dir后仍提示「Missing a temporary folder」排查方案

1. 确认配置已生效

  • 首先确认你修改的是PHP实际加载的配置文件:新建测试文件写入<?php phpinfo(); ?>,访问后查看Loaded Configuration File项对应的路径,核对是否为你修改的php.ini文件
  • 查看phpinfo页面中upload_tmp_dir的实际取值,确认是否已更新为/var/tmp
  • 修改php.ini后必须重启对应服务才能生效:若使用PHP-FPM,执行systemctl restart php7.4-fpm;若使用Apache作为服务端,执行systemctl restart apache2(Debian/Ubuntu)或systemctl restart httpd(CentOS/RHEL)

2. 检查临时目录权限与存在性

  • 确认目录真实存在:执行mkdir -p /var/tmp确保目录创建成功
  • 查看目录权限与归属:执行ls -ld /var/tmp,正常权限应为1777(粘滞位+读写执行权限),归属用户应为PHP运行用户(常见为www-data、apache、nginx)
  • 修复权限命令:
    chmod 1777 /var/tmp
    chown www-data:www-data /var/tmp # 按需替换为你环境的PHP运行用户
    
  • 检查磁盘占用:执行df -h确认磁盘空间未满,执行df -i确认inode未耗尽

3. 排查open_basedir限制

  • 查看phpinfo页面中open_basedir项的取值,若该配置不为空,必须将/var/tmp加入允许访问的路径列表中
  • 示例配置:open_basedir = /home/wwwroot:/var/tmp,修改后重启PHP服务生效

4. 排查PHP-FPM池配置覆盖

  • 若使用PHP-FPM模式,池配置会优先覆盖php.ini的全局配置:进入/etc/php/7.4/fpm/pool.d/目录,打开对应站点的.conf配置文件,查看是否存在php_admin_value[upload_tmp_dir]配置项,若存在需修改该值为/var/tmp,或注释该配置项使用全局php.ini的配置,修改后重启php7.4-fpm服务

5. 排查系统安全模块限制

CentOS/RHEL 系列(SELinux限制)

  • 临时关闭SELinux验证:执行setenforce 0,若此时上传正常则为SELinux权限限制
  • 永久放行规则:
    chcon -R -t httpd_sys_rw_content_t /var/tmp
    setsebool -P httpd_unified on
    

Debian/Ubuntu 系列(AppArmor限制)

  • 临时关闭AppArmor验证:执行systemctl stop apparmor,若此时上传正常则为AppArmor规则限制,需调整AppArmor规则开放PHP对/var/tmp的读写权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:45:07