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

AWS Lambda部署的Laravel导入Excel报只读文件系统错误如何解决?

问题根因

Laravel-Excel 3.1 处理Excel导入的过程中,会独立生成临时处理文件,该临时文件的存储路径和你导入源文件的存储位置无关,默认读取config/excel.php中temporary_files.path的配置值,默认路径为storage/framework/laravel-excel。而AWS Lambda环境中/var/task(Laravel项目部署根目录)为只读文件系统,只有/tmp目录拥有读写权限,因此无论你从本地请求还是S3拉取源文件,都会触发只读路径写入报错。

解决方案

方案1:将临时文件写入Lambda可写的/tmp目录(推荐中小文件场景)

  • 首先发布Laravel-Excel的配置文件,执行命令:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
  • 打开生成的config/excel.php文件,找到temporary_files配置块,修改path参数:
'temporary_files' => [
    'path' => '/tmp',
    // 其余原有配置保持不变
],
  • 也可以不修改配置文件,直接在项目.env文件中添加环境变量即可生效:
EXCEL_TEMPORARY_FILES_PATH=/tmp
  • 执行配置缓存命令后重新部署项目:
php artisan config:cache

方案2:将临时文件直接写入S3(适合大文件场景,避免Lambda /tmp目录512MB容量限制)

如果你的Excel文件体积较大,超过Lambda /tmp目录的容量上限,可以直接配置临时文件存储到S3:

  • 打开config/excel.php文件,修改temporary_files配置块:
'temporary_files' => [
    'disk' => 's3',
    'path' => 'storage/framework/laravel-excel', // 对应你S3桶内的存储路径
    // 其余原有配置保持不变
],
  • 确认你的S3磁盘配置拥有该路径的读写权限,执行配置缓存后重新部署即可。

内容的提问来源于stack exchange,提问作者Muhammed Shihabudeen Labba A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:45:03