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环境):
- 编辑文件:
sudo nano /etc/php/8.2/apache2/php.ini - 找到对应参数并修改,比如:
upload_max_filesize = 10M post_max_size = 12M memory_limit = 16M max_execution_time = 60 - 重启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
相关产品推荐
相关产品推荐

