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

Php fopen():文件名不能为空(laravel 5.4),php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我正在吃晚饭 FilesystemAdapter.php中的ErrorException第146行: fopen(): Filename cannot be empty 使用laravelFilupLoad->store()方法 表单是多部分/表单数据 商店代码: if ($request->hasFile('photo') && $request->photo->isValid()) { // dd($request->fil

我正在吃晚饭
FilesystemAdapter.php中的
ErrorException
第146行:

fopen(): Filename cannot be empty
使用laravel
FilupLoad->store()
方法

表单是多部分/表单数据

商店代码:

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')
y查看文件名

有什么帮助吗?
查看
FilesystemAdapter.php
后,发现
getRealPath()
似乎有问题,总是返回false。有什么想法吗?我是php新手

最后,我在另一个php安装中尝试了相同的代码,并且可以正常工作。因此,可能是我的php.ini中的某些内容,我也遇到了一些问题,我想添加我发现的内容,以防它对其他人有所帮助

1) 检查您的
php.ini
文件,特别是
;sys_temp_dir=“/tmp”
,至少对于使用
PHP
v5.6
IIS
,应该可以对其进行注释

2) 还要验证应该设置的上载\u tmp\u 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®Server的Internet信息服务(IIS)的已知问题。唯一需要的是——许可

C:\Windows\temp

因为它被设置为

上传tmp目录


在php7的php.ini中。

第146行是您向我们展示的11行中的哪一行?是laravel文件系统适配器的一部分。我不认为我必须改变这一点。我是新手php@RiggsFolly我查看了FilesystemAdapter.php,发现getRealPath()似乎有问题,总是返回false。这就是我所能找到的。您在问题中引用了
getRealPath()
,但没有告诉我们它在代码中的位置。另外,如果您可以说它在PHP版本X中不起作用,但在PHP版本Y中起作用,那么您发布的答案应该是一个答案。如果您不能显示这些参数,那么它不是一个有效的答案。为什么一个版本的php优于另一个版本的原因可以帮助您获得投票权。