peinhu/AetherUpload-Laravel

你好,在上传文件过程中出现 "写文件失败" 问题,是否需要某些配置支持?

Opened this issue · 7 comments

在上传上百兆文件时,windows 环境测试没有问题,但在 linux 上,上传中途会出现 “写文件失败”,记录到的异常如下:
[2020-05-26 19:54:28] local.INFO: params: {"resource_ext":"wav","chunk_total":"643","chunk_index":"81","resource_temp_basename":"1590494060728318","group":"file","group_subdir":"202005","locale":"zh","resource_hash":"c714edb26be58b2cee794528d66ddf51","expires":"1584516038","signature":"34597f8bd5e8d632628a443d4b27f53ab8c872a4c4a6afe150d2603fa1eedeaf","resource_chunk":"[object] (Illuminate\\Http\\UploadedFile: /tmp/php5upMt8)"} [2020-05-26 19:54:28] local.INFO: fileSize:1000000 [2020-05-26 19:54:28] local.INFO: Exception:错误:写文件失败 path:aetherupload/file/202005/1590494060728318.wav.part [2020-05-26 19:54:29] local.ERROR: 错误:删除文件失败 {"exception":"[object] (Exception(code: 0): 错误:删除文件失败 at /data/www/v8_file/vendor/peinhu/aetherupload-laravel/src/PartialResource.php:59)
文件夹权限是正常的,小一点文件也可以正常上传,请问是服务器需要调整某些配置嘛?

之前没人报过这个错误,linux测试是没问题的,我上传过4g的文件。
你这个情况比较诡异,不是在开始时报错,也不是在结束时报错,是中途报错,这阶段一般是不会报错的,估计是不是你服务器改了什么配置造成的?目前我无法复现你的情况,所以不太好排查。用一台新服务器安装全新的laravel和扩展包测试一下,如果还有这错误,才能归因于代码的问题。

windows环境测试正常,其实已经可以证明代码没问题了,我估计还是你哪里修改了配置的原因。

有一种可能是你是在本地上传,上传速度非常快,但服务器的内存又比较小,而linux的机制会在频繁读写磁盘的时候自动在内存中替你缓存文件,导致你最后内存被完全占满,所以写入失败,这个是我的猜测。

根据上面的猜测,可以尝试把上传的分块大小加大,以此来减少文件读写频率,如果用的是nignx的话,具体是将nginx.conf中的client_max_body_size设置为4m,将php.ini中的post_max_size设置为5M、upload_max_filesize设置为4M,然后重启php-fpm和nginx服务,最后将aetherupload.php中的chunk_size设置为4000000。

我也遇到上传失败的问题了,
哈希100%
错误:上传失败
POST http://域名/aetherupload/preprocess 502 (Bad Gateway)
即使是很小只2k的文件也会。

@phpervip
你这情况应该跟他不一样,是开始上传时候就出错,检查一下上传目录storage/app以及子文件夹的目录权限是否是755,另外,laravel版本号提供一下?新出的版本是可能有不兼容改动的,我在本地测试下。

@peinhu 感谢回复,确实不是程序的问题,是我们自己机器上有另外的进程影响了上传。