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
使用laravelFilupLoad->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优于另一个版本的原因可以帮助您获得投票权。