Laravel 5.4 文件上传超时求助:执行时长超60秒报错
解决Laravel 5.4图片上传超时问题
嘿,我来帮你搞定这个上传超时的麻烦!你遇到的错误是:
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN) Maximum execution time of 60 seconds exceeded /vendor/league/flysystem/src/Adapter/Local.php
这个错误说明在本地存储图片的过程中,耗时超过了PHP默认的60秒执行上限。咱们从代码问题和环境配置两个方向来解决:
一、先修正代码里的潜在坑
你的代码有几个容易引发问题的地方,先调整过来:
1. 模型方法命名冲突
你在Product模型里定义了一个create()实例方法,但Laravel的Eloquent模型本身就自带静态的create()方法,虽然当前调用逻辑没直接出问题,但这种命名很容易搞混,后续维护也容易踩坑。建议把模型里的方法改个名字,比如storeAndCreate():
// 修改后的模型逻辑 public function storeAndCreate() { $file = request()->file('photo'); $extension = $file->extension(); // 加个时间戳避免同名文件覆盖,也减少重复写入的可能 $name = request('name') . request('roast') . '_' . time() . '.' . $extension; $path = $file->storeAs('public/images', $name); return product::create([ 'name' => request('name'), 'roast' => request('roast'), 'origin' => request('origin'), 'photo' => $path, 'price' => request('price'), 'stock' => 0 ])->name; }
然后控制器里对应修改调用逻辑:
// 修改后的控制器逻辑 public function create(Request $request) { $validatedData = $request->validate([ 'name' => 'required|min:2', 'roast' => 'required|min:2', 'origin' => 'required|min:2', 'price' => 'required', 'photo' => 'required|file|image|max:2048' // 新增文件大小限制,比如限制最大2MB ]); $product = new Product; $name = $product->storeAndCreate(); session()->flash("message", "$name was created"); return back(); }
2. 增加文件大小验证
在表单验证里给photo加上max:2048(单位是KB,也就是2MB),避免用户上传超大文件导致超时。你可以根据实际需求调整这个数值。
二、直接解决超时问题
如果调整代码后还是超时,咱们从环境配置入手:
- 临时提高脚本执行时间:在控制器的
create方法开头加上set_time_limit(120);,把当前脚本的执行时间临时提高到120秒,这是快速试错的临时方案,不建议长期依赖。 - 检查存储目录权限:确保
storage/app/public/images目录存在,并且服务器有写入权限(Linux下一般设置755权限)。权限不足的话,Flysystem会反复尝试写入,最后就超时了。 - 优化存储方式:如果经常传大文件,考虑用云存储替代本地存储,云存储的上传效率更高,也能减少本地IO的耗时。
- 修改PHP全局配置:找到服务器上的
php.ini文件,把max_execution_time参数从60改成更大的数值(比如120),修改后记得重启Web服务器生效。
三、额外小建议
- 给文件名加时间戳或者随机字符串,避免同名文件被覆盖,就像我上面模型代码里改的那样。
- 可以用Laravel的
Storage门面来操作文件,代码会更清晰,比如把$file->storeAs()改成:
use Illuminate\Support\Facades\Storage; $path = Storage::putFileAs('public/images', $file, $name);
内容的提问来源于stack exchange,提问作者seamus
相关产品推荐
相关产品推荐

