Nginx+CodeIgniter文件上传报错“The temporary folder is missing”排查求助
问题原因及解决办法
报错提示「The temporary folder is missing」核心是CodeIgniter上传类无法访问PHP临时文件存储目录,以下是具体排查方向和解决措施:
1. PHP临时目录配置异常
检查目标服务器的php.ini文件中upload_tmp_dir配置项:
- 可以通过创建
phpinfo.php文件(内容为<?php phpinfo(); ?>)访问查看该配置的具体值。 - 如果
upload_tmp_dir为空,PHP会使用系统默认临时目录(如/tmp),但如果该目录不存在、权限不足,就会触发报错。
解决步骤:
- 创建一个可用的临时目录,比如
/var/www/tmp:mkdir -p /var/www/tmp - 修改
php.ini的upload_tmp_dir指向该目录:upload_tmp_dir = "/var/www/tmp" - 给临时目录设置正确权限,确保Nginx运行用户(通常是
www-data或nginx)有读写权限:chmod 755 /var/www/tmp chown www-data:www-data /var/www/tmp - 重启PHP-FPM(或对应的PHP服务)使配置生效。
2. 上传目标目录问题
代码中设置的/assets/document/目录,需确认在目标服务器上存在且权限正确:
- 若该目录不存在,创建目录:
mkdir -p /assets/document/ - 设置权限:
chmod 755 /assets/document/ chown www-data:www-data /assets/document/
3. CodeIgniter自身临时目录配置
检查application/config/config.php中的$config['tmp_path']配置项,如果该值被设置,需确保对应的目录存在且权限符合要求。
是否需要Nginx额外配置?
通常不需要针对该报错添加特殊配置,但需确保Nginx允许的上传文件大小足够(避免文件过大被拦截),可在站点配置或nginx.conf中添加:
client_max_body_size 20M;
修改后重启Nginx生效。
内容的提问来源于stack exchange,提问作者vellai durai
相关产品推荐
相关产品推荐

