Laravel - 当被播种者调用时使目录不起作用

问题描述

我正在尝试使用 Laravel 干预为过去创建的站点创建图标,这一行是创建目录以使用此播种机保存每个站点的图标

我正在尝试运行播种机,在播种机中,我从控制器调用一个函数,但是当该函数尝试创建目录时,它停止工作。

这是我的播种机的一部分

$route = $this->templateController->resizeImage($logo,$placeName,$domain);

当我使用 xdebug 进行调试时,这行代码正确调用了该函数

我的控制器:

public function resizeImage($logo,$domain)
    {
        $img = \Image::make($logo)->resize(32,32,function ($constraint) {
            $constraint->aspectRatio();
            $constraint->upsize();
        });

        $route = 'img' . DIRECTORY_SEParaTOR . $domain . DIRECTORY_SEParaTOR . 'favicon.png';
        if (File::exists($route)) {
            $img->save(public_path($route));
        } else {
            $newRoute = File::makeDirectory('img' . DIRECTORY_SEParaTOR . $domain);
            $img->save(public_path($route));
        }
        return $route;
    }

一切正常,但是当我调试这一行时

$newRoute = File::makeDirectory('img' . DIRECTORY_SEParaTOR . $domain);

我在工匠控制台中收到此错误

mkdir(): 没有那个文件或目录

在 D:\Programas\laragon\www\google-places-ranking\vendor\laravel\framework\src\Illuminate\Filesystem\Filesystem.PHP:581 577▕如果($force){ 第 578 章 第579章 580▕ ➜ 581▕ return mkdir($path,$mode,$recursive); 第582章 583▕ 第584章 585▕ * 移动目录。

1
D:\Programas\laragon\www\google-places-ranking\vendor\laravel\framework\src\Illuminate\Filesystem\Filesystem.PHP:581 mkdir("img\testing")

2
D:\Programas\laragon\www\google-places-ranking\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.PHP:261 Illuminate\Filesystem\Filesystem::makeDirectory("img\testing")

注意:当我将此控制器与表单一起使用时,此功能可以正常工作

解决方法

我解决了更换线路

$newRoute = File::makeDirectory('img' . DIRECTORY_SEPARATOR . $domain);

到这里

$newRoute = File::makeDirectory(public_path(). DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . $domain,0777,true);