Laravel 5.6上传图片返回size为0、mime为application/octet-stream错误如何解决
问题原因
你输出中返回的error: 6是PHP官方定义的上传错误码,对应常量UPLOAD_ERR_NO_TMP_DIR,即PHP找不到用于存储上传文件的临时目录。
该错误会直接导致你看到的异常现象:
- 文件大小为0、mimeType被识别为通用的
application/octet-stream:因为文件根本没有被写入到临时存储,拿到的全是空的默认属性,和原文件实际大小无关 - 修改
max_image_upload不生效:该配置和临时目录问题无关联 - 其他服务器部署正常:其他服务器的PHP临时目录配置、权限均符合要求
解决方法
- 检查php.ini配置
打开当前生效的php.ini文件,找到upload_tmp_dir配置项:- 确认该项没有被注释(行首没有分号)
- 确认配置值指向一个真实存在的目录,示例配置:
upload_tmp_dir = /tmp/php_upload - 配置临时目录权限
确保你设置的临时目录,对运行PHP服务的进程用户(通常为www-data、apache、nginx)拥有读写权限,示例操作命令:# 创建目录(如果不存在) mkdir -p /tmp/php_upload # 授予目录读写权限 chmod 755 /tmp/php_upload # 把目录所有者改为PHP运行用户 chown www-data:www-data /tmp/php_upload - 重启服务生效
修改完配置和权限后,重启PHP对应的服务即可:# php-fpm 重启示例 systemctl restart php7.0-fpm # apache 重启示例 systemctl restart apache2 - 验证功能
重启后重新测试上传功能即可恢复正常。
内容的提问来源于stack exchange,提问作者aravindan
相关产品推荐
相关产品推荐

