【问题标题】:fopen(): Filename cannot be empty (laravel 5.4)fopen():文件名不能为空(laravel 5.4)
【发布时间】:2017-08-31 11:57:52
【问题描述】:

我有一个 ErrorExceptionFilesystemAdapter.php 第 146 行:

fopen(): Filename cannot be empty

使用 laravel FilupLoad->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')); y 查看文件名

对此有任何帮助吗? 在查看FilesystemAdapter.php 之后,getRealPath() 似乎有问题,总是返回 false。有任何想法吗?我是php新手

【问题讨论】:

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

标签: php laravel laravel-5.4


【解决方案1】:

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

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) 如果您仍有问题,请检查这些目录的权限。

【讨论】:

    【解决方案2】:

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

    的许可

    C:\Windows\temp

    因为它被设置为

    上传_tmp_dir

    在 php7 的 php.ini 中。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-30
        • 2017-10-02
        • 2021-09-08
        • 2012-05-24
        • 1970-01-01
        • 2018-02-04
        • 1970-01-01
        相关资源
        最近更新 更多