유효한 캐시 경로를 제공하십시오


152

작동하는 laravel 앱을 복제하고 다른 앱에 사용하도록 이름을 변경했습니다. 공급 업체 폴더를 삭제하고 다음 명령을 다시 실행하십시오.

composer self-update

composer-update

npm install

bower install

브라우저에서 앱을 실행하려고하면 경로와 모든 것을 올바르게 구성했지만 다음 오류가 발생합니다.

Compiler.php 36 행의 InvalidArgumentException : 유효한 캐시 경로를 입력하십시오.

Filesystem.php 줄 111의 ErrorException : file_put_contents (F : \ www \ example \ app \ storage \ framework / sessions / edf262ee7a2084a923bb967b938f54cb19f6b37d) : 스트림을 열지 못했습니다 : 해당 파일 또는 디렉토리가 없습니다

나는 전에이 문제를 겪어 본 적이 없으며, 원인을 모르거나 해결 방법을 모르고 온라인으로 해결책을 찾아 봤지만 지금까지 아무도 찾지 못했습니다.


저장 폴더를 다시 빌드해야합니다. 폴더는 .gitignore 파일에 있으므로 프로젝트를 복제 할 때 복사되지 않습니다 (
레포지토리로

답변:


488

다음을 시도하십시오 :

저장 / 프레임 워크 에서 다음 폴더를 만듭니다 .

  • sessions
  • views
  • cache

이제 작동합니다


21
나는 이것을 php artisan cache : clear 및 php artisan config : clear 및 php artisan view :와 아래 답변에서 지운 다음 작동했습니다
cja

저장 폴더를 수동으로 삭제하고 cmd를 통해 "php artisan storage : link"명령을 실행할 수 있습니다. 그런 다음 위에서 제안한대로 폴더를 만듭니다. 이전 스토리지 폴더를 백업으로 유지하고 나중에 복사하여 프레임 워크 폴더를 새 스토리지 경로에 붙여 넣을 수 있습니다.
Niladri Banerjee-우타르 파라

나는이 문제를 정확히 가지고 있었고 수정되었습니다. 일시적인 파일 변경 내용으로 인해 Subversion 제품에서 전체 프레임 워크 폴더를 의도적으로 제외 한 결과였습니다. 그런 다음 새 시스템에서 repro를 설정하면 이러한 폴더가 자연스럽게 존재하지 않습니다. 내가 공유 할 줄
알았는데

3
자식은 빈 폴더를 복제하지 않습니다! 이 3 개의 폴더에 대한 파일 folder.keeper를 작성합니다.
Tiefan Ju

예,이 폴더의 버전을 지정할 필요가 없기 때문에
Mauricio Wanderley Martins

45

이 시도:

  1. php artisan cache:clear
  2. php artisan config:clear
  3. php artisan view:clear

11
나를 위해 작동하지 않았다. 알았습니다 [InvalidArgumentException] Please provide a valid cache path. 다시
MattCochrane

내 경우에는 실행하면 악몽을 얻었다 php artisan cache:clear!
Ben

32

따라서 분명히 내 프로젝트를 복제 할 때 스토리지 폴더 내의 프레임 워크 폴더가 새 디렉토리에 복사되지 않아서 내 오류가 발생했습니다.


내가 일을 할 때도 같은 일이 일어났다 composer update. 아직 해결책이 없습니다.
피터

모든 경로를 다시 확인하고 누락 된 폴더 나 파일이 없는지 확인하십시오.
user3718908

4
또한 프레임 워크 폴더에 각각의 권한이있는 모든 서브 디렉토리가 있는지 확인하십시오
manix

내 문제가 함께 할 수있는 STH 것 같다 Laravel 5.2.40의 변화 "보기 캐시 경로가 비어있는 경우 던져 예외를." laraver.xyz/projects/Laravel/versions/v5.2.40 I의 변화를 되돌릴 수 없습니다 - 결국 작곡가 업그레이드 또는 장인의 의견이 실패 함
Peter

내 경우에는 응용 프로그램이 저장소 디렉토리 안에 폴더가 누락되었습니다
Chaudhry Waqas

21

다음 과 같이 다른 환경에 laravel 앱을 설치하기위한 지침으로 readme.md 를 편집 할 수 있습니다 .

## Create folders

```
#!terminal

cp .env.example .env && mkdir bootstrap/cache storage storage/framework && cd storage/framework && mkdir sessions views cache

```

## Folder permissions

```
#!terminal

sudo chown :www-data app storage bootstrap -R
sudo chmod 775 app storage bootstrap -R

```

## Install dependencies

```
#!terminal

composer install

```

당신은 내 하루를 저장 :)
Mankeomorakort

15

이 오류의 원인은 Illuminate \ View \ Compilers \ Compiler.php에서 추적 할 수 있습니다.

public function __construct(Filesystem $files, $cachePath)
{
    if (! $cachePath) {
        throw new InvalidArgumentException('Please provide a valid cache path.');
    }

    $this->files = $files;
    $this->cachePath = $cachePath;
}

생성자는 Illuminate \ View \ ViewServiceProvider의 BladeCompiler에 의해 호출됩니다.

/**
 * Register the Blade engine implementation.
 *
 * @param  \Illuminate\View\Engines\EngineResolver  $resolver
 * @return void
 */
public function registerBladeEngine($resolver)
{
    // The Compiler engine requires an instance of the CompilerInterface, which in
    // this case will be the Blade compiler, so we'll first create the compiler
    // instance to pass into the engine so it can compile the views properly.
    $this->app->singleton('blade.compiler', function () {
        return new BladeCompiler(
            $this->app['files'], $this->app['config']['view.compiled']
        );
    });

    $resolver->register('blade', function () {
        return new CompilerEngine($this->app['blade.compiler']);
    });
}

따라서 다음 코드를 추가로 추적하십시오.

$this->app['config']['view.compiled']

표준 라 라벨 구조를 사용하는 경우 일반적으로 /config/view.php에 있습니다.

<?php
return [
    /*
    |--------------------------------------------------------------------------
    | View Storage Paths
    |--------------------------------------------------------------------------
    |
    | Most templating systems load templates from disk. Here you may specify
    | an array of paths that should be checked for your views. Of course
    | the usual Laravel view path has already been registered for you.
    |
    */
    'paths' => [
        resource_path('views'),
    ],
    /*
    |--------------------------------------------------------------------------
    | Compiled View Path
    |--------------------------------------------------------------------------
    |
    | This option determines where all the compiled Blade templates will be
    | stored for your application. Typically, this is within the storage
    | directory. However, as usual, you are free to change this value.
    |
    */
    'compiled' => realpath(storage_path('framework/views')),
];

경로가 없으면 realpath (...) 는 false를 반환합니다. 따라서 호출

'Please provide a valid cache path.' error.

따라서이 오류를 없애기 위해 할 수있는 일은

storage_path('framework/views')

또는

/storage/framework/views

존재 :)


11

"프레임 워크"안에 폴더를 만들어야합니다. 다음 단계를 따르십시오.

cd storage/
mkdir -p framework/{sessions,views,cache}

Laravel이이 디렉토리에 데이터를 쓸 수 있도록 권한을 설정해야합니다.

chmod -R 775 framework
chown -R www-data:www-data framework

권한이 777이면 동일한 서버의 사용자는 누구나 파일을 읽고 쓰고 실행할 수 있습니다.
Sohail Ahmed

1
sessions복수의 경우가 아닌 디렉토리session
Evgeniy Maynagashev 10

1
@Evgeniy Maynagashev, 그렇습니다. 오타 오류로 철자가 수정되었습니다. 감사합니다
Sohail Ahmed

7

이 폴더를 만들지 않으면 다음 폴더가 있는지 확인하십시오.

  • 스토리지 / 프레임 워크 / 캐시
  • 저장 / 프레임 워크 / 세션
  • 저장 / 프레임 워크 / 테스트
  • 저장 / 프레임 워크 / 조회

6

저장소 폴더와 해당 하위 폴더 세션 , 보기캐시 내에 프레임 워크 폴더를 만들 때 문제가 해결되었습니다 .

cmd 또는 터미널로 이동 한 다음 프로젝트 루트 경로를 입력 한 후 다음 유형을 입력하십시오.

cd storage
mkdir framework
cd framework
mkdir sessions
mkdir views
mkdir cache

프로젝트 루트 경로로 다시 돌아가서 composer update를 실행하십시오.

그 후 장인은 완벽하게 작동합니다.


6

다음을 시도하십시오 :

저장 / 프레임 워크 아래에 다음 폴더를 만듭니다.

  • 세션
  • 견해
  • 캐시 / 데이터

여전히 작동하지 않으면 시도하십시오

php artisan cache:clear
php artisan config:clear
php artisan view:clear

캐시를 지울 수 없다는 오류가 발생하는 경우 캐시 / 데이터에 폴더 데이터를 작성하십시오


5

터미널에서 실행하십시오

   sudo mkdir storage/framework
   sudo mkdir storage/framework/sessions
   sudo mkdir storage/framework/views
   sudo mkdir storage/framework/cache
   sudo mkdir storage/framework/cache/data

이제 권한을 변경해야합니다.

   sudo chmod -R 777 storage

동적으로 작성하려면 다음과 같이 작성할 수도 있습니다 $paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"]; .`foreach ($ paths as $ path) {``if (! File :: isDirectory ($ path)) {` File::makeDirectory($path, 0777, true, true); } }
Rasheduzzaman


1

내 측면 (localhost에 배포하는 동안)에 문제가 있습니다.보기 폴더가 누락되었습니다. 따라서 프레임 워크 폴더가없는 경우 폴더를 추가해야합니다. 그러나 이미 프레임 워크 폴더가 존재하면 위의 모든 폴더를 확인하십시오 (예 : 캐시 2. 세션 3.보기).

프레임 워크 디렉토리에 존재합니다.


0

내에이 줄을 추가 하여이 문제를 해결했습니다 index.php.

$app['config']['view.compiled'] = "storage/framework/cache";

0

스토리지 디렉토리가 없거나 서브 디렉토리 중 하나 일 수 있습니다. 스토리지 디렉토리에는 Laravel 설치와 함께 제공된 모든 하위 디렉토리가 있어야합니다.


-1

내 2 센트

스토리지 내부의 모든 것을 제거하고 다음을 수행하십시오.

> cd storage/
> mkdir -p framework/{sessions,views,cache}
> chmod -R 777 framework

// This last line depends on your user group settings so 
// it may not be applicable to you.
> chown -R www-data:www-data framework

나를 위해 일했다 =)


-2

오류 : '유효한 캐시 경로를 입력하십시오.' 오류.

이러한 유형 오류가 발생하면 아래에 주어진 해결책이 있습니다.

스토리지 / 프레임 워크 / 캐시 내에 데이터 폴더를 생성하십시오


2
스택 오버플로에 오신 것을 환영합니다! 해결책뿐만 아니라 이것을 발견 한 방법에 대한 최소한 몇 마디의 답변을 제공해주십시오.
zixuan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.