在文件夹中创建图像会导致创建名称为 folder/image.jpg 的图像

creating image inside a folder results in creating an image with name folder/image.jpg

我有这段代码:

    $file = $faker->image($dir = public_path().'/tmp', $width = 800, $height = 600, '', true);
    $hash = str_random(7);
    $thumbnailName = $hash . '.jpg';
    $thumbnailImage = ImgResizer::make($file)->fit(180, 180);
    $thumbnailImage->save( public_path() . '\thumb\'. $thumbnailName);
    rename($file, 'public/'.$hash.'.jpg');

如您所见,我正在使用 faker 来填充数据库。 Faker 也支持图像,它从 lorempixel.com 获取图像。我将这张图片直接保存在 public 文件夹中,这样就可以了。我还使用 InternventionImage 创建图像的缩略图并将其保存到 public/thumb 文件夹,如您在代码中所见。

当我运行 db:seed时,没有产生任何错误,一切顺利。但是,当我查看 thumb 文件夹时,那里没有文件。在 public 文件夹中创建了一堆图像,但不在 thumb 中。我登录服务器并 cd 进入默认文件夹并输入 ls,我得到了这个输出:

正如您在图片上看到的那样,那里有一堆 public/thumb/hashcode.jpg 图片。这怎么可能,它们不在 thumb 文件夹中,为什么要把它们列在那里?脚本是否改为创建文件名为 public/thumb/hashcode.jpg 的文件?如何将它们放入拇指文件夹?此代码适用于我的本地计算机 windows 10 在 apache2 和 php7.

尝试改变这个:

public_path() . '\thumb\'. $thumbnailName

为此:

public_path().DIRECTORY_SEPARATOR.'thumb'.DIRECTORY_SEPARATOR.$thumbnailName

此外,创建 thumb 目录并设置正确的权限:

chmod -R 755 /public/thumb