ImageIntervention & Laravel 9: file_put_contents ERROR Failed to open stream: No such file or directory

I’m using Laravel 9 and Image Intervetion to resize uploaded images:

public static function resize($file, $fileName)
    {
        $path = self::route();
        foreach (self::size() as $key => $value) {
            $resizePath = self::route() . "{$value[0]}x{$value[1]}_" . $fileName;
            Image::make($file->getRealPath())
                ->resize($value[0], $value[1], function ($constraint) {
                    $constraint->aspectRatio();
                })
                ->save(storage_path($resizePath));
            $urlResizeImage[] = ["upf_path" => $resizePath, "upf_dimension" => "{$value[0]}x{$value[1]}"];
        }
        self::$urlResizeImage = $urlResizeImage;
    }

But the line ->save(storage_path($resizePath)); returns this error:

Can’t write image data to path

So in the Image Facade of Intervention, there’s a @file_put_contents:

public function save($path = null, $quality = null, $format = null)
    {
        $path = is_null($path) ? $this->basePath() : $path;
        // dd($path);

        if (is_null($path)) {
            throw new NotWritableException(
                "Can't write to undefined path."
            );
        }

        if ($format === null) {
            $format = pathinfo($path, PATHINFO_EXTENSION);
        }

        $data = $this->encode($format, $quality);
        $saved = @file_put_contents($path, $data);

        if ($saved === false) {
            throw new NotWritableException(
                "Can't write image data to path ({$path})"
            );
        }

        // set new file info
        $this->setFileInfoFromPath($path);

        return $this;
    }

And I tried removing @ from @file_put_contents to see what’s going wrong here, but then I got this:

file_put_contents(C:xampphtdocsprojectstorageupload/1401/11/images/questions/107200x200_1671289517402.jpg): Failed to open stream: No such file or directory

So it basically says that it can not find the $path and when I uncomment dd($path), this is the output:

C:xampphtdocsprojectstorageupload/1401/11/images/questions/108200x200_1671289517402.jpg

So what’s going wrong here?

How can I properly save the resized images into this directory?

Please I beg you to help me with this because it’s been a week that I’m struggling with this error and got headache!


UPDATE #1:

Here is the route():

public static function route()
    {
        return "upload/" . jdate()->format('Y') . "/" . jdate()->format('m') . "/" . self::$typeFile . "/" . strtolower(self::$catType)."s" . "/" . self::$objId;
    }

And I changed it to this:

public static function route()
    {
        return "upload".DIRECTORY_SEPARATOR.jdate()->format('Y').DIRECTORY_SEPARATOR.jdate()->format('m').DIRECTORY_SEPARATOR.self::$typeFile.DIRECTORY_SEPARATOR.strtolower(self::$catType)."s".DIRECTORY_SEPARATOR.self::$objId;
    }

But still the same error occurs 🙁