fopen(): 文件名不能为空 (laravel 5.4)

fopen(): Filename cannot be empty (laravel 5.4)

我有一个 ErrorExceptionFilesystemAdapter.php 第 146 行:

fopen(): Filename cannot be empty

使用laravelFilupLoad->store()方法

表格是multipart/form-data

商店代码:

if ($request->hasFile('photo') && $request->photo->isValid()) {

            // dd($request->file('photo'));
            $path = $request->photo->store('profiles');

            $imagen = new Imagen(['url' => $path]);

            $imagen->save();

            $perfil->imagen()->attach($imagen);
        }

如果我使用 dd($request->file('photo')); 你会看到文件名

有什么帮助吗? 查看 FilesystemAdapter.php 后,似乎 getRealPath() 有问题,总是 returns 错误。有任何想法吗?我是 php

的新手

最后,我在另一个 php 安装中尝试了相同的代码并且工作正常。所以可能是我的 php.ini

我也遇到了这个问题,我想添加我发现的内容,以防对其他人有所帮助。

1) 检查你的 php.ini 文件,特别是 ; sys_temp_dir = "/tmp" 应该可以留下注释,至少 IIS 使用 PHP v5.6,

2) 还要验证应该设置的 upload_tmp_dir=C:\WINDOWS\temp

3) 您还需要启用 php_fileinfo 的扩展,在 windows 中是 extension=php_fileinfo.dll

你测试的时候,你可以这样调试输出,下面应该都回来了true

dd($request->hasFile('my_file'));

dd($request->file('my_file')->isValid());

4) 如果仍有问题,请检查这些目录的权限。

这是 Windows® 服务器的 Internet 信息服务 (IIS) 的一个已知问题。唯一需要的是 -

的许可

C:\Windows\temp

因为设置为

upload_tmp_dir

在 php.ini 中 php7。