Laravel 5 show ErrorException file_put_contents가 스트림을 열지 못했습니다. 해당 파일 또는 디렉토리가 없습니다.


84

저는 Laravel 5에 대한 프로젝트를 가지고 있으며 사무실과 집에서도 작업합니다. 잘 작동하지만 최근 집에서는 작동을 멈췄습니다. Laravel은 나에게 두 개의 ErrorException을 보여줍니다.

file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory

file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory

Google에서 문제 결정을 검색 중이며 올바른 권리에 대한 정보를 찾습니다. 모든 조언은 Linux에 관한 것이지만 저는 사무실과 집에서도 Windows에서 일하고 있습니다.

내가 응용 프로그램 캐시를 지우고 캐시를 보려고 할 때, artisan이 나에게 말을 걸었습니다. 그러나 캐시 데이터와 뷰는 스토리지에 있습니다.

이 문제를 어떻게 해결할 수 있습니까?

미리 감사드립니다!


6
"php artisan cache : clear"캐시를 정리해 볼 수 있습니다. 저는 Linux를 사용하고 있으므로 Windows에 대한 권한이 확실하지 않지만
읽기 전용

@educolo 나는 문제가 디렉토리 권한에 관한 것이라고 생각하지 않습니다. 몇 달 동안 괜찮 았기 때문입니다.
Evgeniy

답변:


148

이 문제를 해결하는 가장 좋은 방법은 디렉토리로 이동하여 파일을 laravel/bootstrap/cache삭제하는 것 config.php입니다. 또는 이름을 바꿀 수 있습니다 config.php.old . 그러면 문제가 해결됩니다. 해피 코딩 :-)


7
예, 도움이 되겠지만 캐시를 지우면 작업을 수행 할 수 있습니다. Vagrant Box 외부에서 실행 php artisan config:cache하면 응용 프로그램의 경로가 다시 작성됩니다. 방랑 상자 내부에서 응용 프로그램을 실행할 때 경로는 예를 들어 황혼 테스트의 경로와 다릅니다.
조지 밀로 나스

laravel의 구성이 laravel을 죽이는 이유는 무엇입니까? 작품 감사합니다.
Andrew

config : cache가 어떤 이유로 수정되지 않았습니다.
Andrew

당시 또는 일반적으로 SSH를 통해 액세스 할 수없는 사람들을 위해 깔끔하고 단순하며 직접적입니다. 좋은 대답입니다!
lzoesch

설정 : 옆에 나를 위해 분명 작동하는 파일이 너무 작동 이름을 변경
모하메드 오메르

66

일반적으로 php artisan config:cache프로덕션 배포 루틴의 일부로 명령을 실행해야합니다 . 문제에 대한 해결책으로 더 빠른 구성로드를 위해 캐시 파일을 다시 만드는 것이 좋습니다.

이렇게하려면 명령 줄에서 다음 Artisan 명령을 실행하십시오.

  • php artisan cache:clear
  • php artisan config:cache

경로에 다음을 추가하여 프로그래밍 방식으로 명령을 실행할 수 있습니다.

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    $exitCode = Artisan::call('config:cache');
    return 'DONE'; //Return anything
});

그런 다음 clear-cache브라우저 에서 경로 를 호출하십시오 .

도움이 되었기를 바랍니다.


49

몇 가지 조사 후 나는 이해했습니다. 매우 비슷하지만 루트 프로젝트 위치가 다르며 /bootstrap/cache. 캐시 지우기 프로젝트가 시작된 후.


이 많은 제안 솔루션이 실패한 후, 감사합니다, 내 문제를 해결
아궁 사 기타를

아무 문제 @AgungSagita)
에브 게니

당신은 생명의 은인이야
베스 유마

이것은 다른 많은 대안을 시도한 내 문제를 해결했습니다. 감사합니다 :)
binmosa

누락 된 서비스 제공 업체에 대한 내 질문에 대한
답인 것으로 보셨 으면 좋겠습니다

14

실제로 프로젝트를 서버에서 로컬로 옮길 때이 문제에 직면했습니다.

스토리지 / 프레임 워크

4 개의 기본 폴더는 캐시, 세션, 테스트,보기가 필요합니다.

내 경우에는 세션이 누락되었을 수 있습니다.

그래서 수동으로 세션 폴더를 만들고 브라우저를 새로 고 쳤는데 작동했습니다.

따라서이 문제를 삭제하면 누락 된 폴더를 해결할 수 있습니다.


3
이 사람은 사실이다
아마드 자밀 알 Rasyid


6

Windows의 Apache + WSL

이것은 어리석은 실수이고 다른 사람들과 다른 대답이지만 나에게 일어났기 때문에 추가하겠습니다.

WSL (Windows의 Linux bash)을 사용하여 laravel 애플리케이션을 관리하고 Windows Apache를 사용 하여 서버를 실행하는 경우 wsl에서 캐싱 명령을 실행 하면 Windows 경로가 아닌 Linux 경로 가 저장됩니다. 하면 세션 및 기타 폴더에 가 .

해결책

WSL이 아닌 powershell 에서 캐시 지우기 명령을 실행하기 만하면 됩니다.

$ php artisan optimize

나에게 충분했다.


나는 같은 문제에 부딪쳤다. 저는 VMWare 가상 머신에서 Windows와 Linux 인스턴스를 실행하고 있습니다. 이를 통해 Windows와 Linux에서 모두 테스트 할 수 있지만 php artisan config:cacheWindows 에서 명령을 실행하면 Linux가 더 이상 응용 프로그램의 웹 페이지를로드하지 않습니다. 부트 스트랩 / 캐시 폴더로 이동하여 config.php 파일을 삭제하면 문제가 해결되었습니다.
데이비드 트란

4

이러한 오류에 유용했던 다음 명령으로 시도하십시오.

경로 \ 프로젝트 \ 스토리지 \ 프레임 워크 \ views ...

php artisan view:clear

경로 \ 프로젝트 \ 스토리지 \ 프레임 워크 / 세션 ...

php artisan config:cache

2
이미 여러 upvoted 답변이있는 동안 새 응답을 게시 할 경우, 당신은 다른 사람이 당신의 대답에서 배울 수 있도록 그것을 좀 더 설명을 추가해야합니다
니코 하세

4

공유 호스팅의 경우 명령 줄에 액세스 할 수없는 경우 laravel / bootstrap / cache 폴더로 이동하여 config.php를 삭제 (또는 이름 바꾸기)하면 모두 완료됩니다!


2

이 문제를 해결하는 가장 좋은 방법은 디렉토리로 이동하여 laravel/bootstrap/cache캐시에서 모든 파일을 삭제하는 것입니다.

이렇게하려면 명령 줄에서 다음 Artisan 명령을 실행하십시오.
1. php artisan config:clear
2. php artisan cache:clear
3. php artisan config:cache

패널 또는 서버에서 다음을 경로에 추가하여 명령을 실행할 수 있습니다.

    Route::get('/clear-cache', function() {
        $run = Artisan::call('config:clear');
        $run = Artisan::call('cache:clear');
        $run = Artisan::call('config:cache');
        return 'FINISHED';  
    });

그런 다음 www.yourdomain.com/clear-cache 브라우저 에서 경로 를 호출하십시오  .


2

/bootstrap/cache/config.php의 이름을 config.php.old로 변경해도 artisan 명령으로 캐시를 지울 수 없습니다.

  1. php artisan config : clear
  2. php artisan cache : clear
  3. PHP 장인 설정 : 캐시

그리고 이상한 이유로 디렉터리에 대한 소유자의 권한을 변경할 수 없으므로 내 솔루션은 내 IDE (Visual Studio Code)를 관리자로 실행하고 모든 것이 작동합니다.

내 프로젝트는 다른 디스크의 F : / 경로에 있습니다.


1

작곡가 파일에 문제가있을 수 있습니다. 시도해 볼 수 있습니다.

  • composer install 은 composer.lock에 따라 공급 업체 패키지를 설치 합니다 (또는 존재하지 않는 경우 composer.lock 생성).
  • composer 업데이트는 항상 composer.lock을 재생성하고 composer.json을 기반으로 사용 가능한 패키지의 최신 버전을 설치합니다.

  • composer dump-autoload 는 아무것도 다운로드하지 않습니다. 프로젝트에 포함되어야하는 모든 클래스 목록 (autoload_classmap.php) 만 다시 생성합니다. 프로젝트 내부에 새 수업이있을 때 이상적입니다. 이상적으로는 웹 페이지를 더 빠르게로드하기 위해 composer dump-autoload -o를 실행합니다. 기본값이 아닌 유일한 이유는 생성하는 데 시간이 조금 더 걸리기 때문입니다 (하지만 약간 눈에 띕니다).

출처


불행히도 도움이되지 않았습니다. 나는 당신의 모든 조언을 시도합니다.
Evgeniy

죄송합니다 :( 원래 게시물에서 권리 / 권한이라고 생각한다고 말씀하셨습니다.이 게시물 에는 문제가 될 수 있다고 생각되면 파일 및 폴더에 대한 권한을 변경하는 방법에 대한 많은 정보가 포함되어 있습니다. 창 나는 많은 것을 모르는, 그래서 희망이 당신을 위해 밖으로 작동합니다..
레이첼 MacKeigan

나는 문제가 디렉토리 권한에 관한 것이라고 생각하지 않습니다. 몇 달은 괜찮 았기 때문입니다. 내가 기억하는 것처럼, 나는 이전에 일부 Laravel 패키지를 업데이트 한 다음 작동을 멈췄습니다. 그러나 다음날 사무실 프로젝트는 잘 시작되었습니다.
Evgeniy

1

이 문제의 원인은 localhost의 캐시 파일 때문입니다. 그에 따르면 내 프로젝트의 캐시를 지우기 위해 다음과 같이 여러 가지를 시도했지만 실패 할 때마다.

  • web.php 파일 (장인 코드 포함)을 변경하여 cahe 명령을 지우려고했습니다.
  • SSH를 연결하여 캐시를 지우려고했습니다 (PUTTY를 통해)
  • 공용 디렉토리를 만드는 내 하위 도메인에서 내 프로젝트를 호스팅하려고했습니다.

그래서 위의 모든 단계가 실패한 후이 문제에 대한 해결책을 찾았고 완벽하게 작동했습니다. host_route / bootstrap / cache 에서 cache.php 파일을 삭제했습니다. 디렉토리 .

이 답변이 문제에 도움이 될 것이라고 생각합니다.


1

제 경우에는 php artisan 명령으로 고칠 수있는 것은 없었습니다. 문제는 / storage 폴더에 대한 폴더 권한이었습니다. 오류는 그것을 명확하게하지 않았습니다.


1

도커 내에서 laravel을 실행하는 경우 해당 파일 시스템에 액세스하십시오.

$ docker exec -it name-of-laravel-container /bin/bash

다음으로 laravel 프로젝트 루트 디렉터리로 이동합니다. 내부 저장소 / 프레임 워크 폴더 가 있는지 확인하십시오 .

  1. 은닉처
  2. 세션
  3. 테스트
  4. 견해

그리고 읽기와 쓰기가 모두 가능해야합니다.


1

storage\framework\sessions폴더 생성을 통해이 문제를 해결했습니다 .


0

/storage첫 번째 컴퓨터 의 폴더에 대한 .gitignore 때문에 비슷한 문제가 있었고 두 번째 컴퓨터에서 복제 된 저장소와 laravel은 세션 캐시를 기록하기 위해 수정되었습니다.

따라서 수동으로 폴더를 만드는 /storage/sessions것이 해결책이 될 수 있습니다 ..


0

나를 위해 일한 해결책은 앱을 관리자로 제공하는 것입니다.

  1. mac또는 linux사용sudo php artisan serve
  2. 창문을 열려고에 CMDint로서 adminstrator다음 프로젝트 디렉토리 및 실행으로 이동php artisan serve

0

의 내용을 지우는 것이 storage/framework/cache나를 위해 트릭을했습니다. 다른 것은 작동하지 않았습니다 ...


0

저는 Laravel 8을 사용했습니다. 이것이 제 솔루션입니다.

Goto : 스토리지 / 프레임 워크 / 캐시 / 데이터
세트 권한 디렉토리 데이터는 777입니다.

그것은 나를 위해 일했습니다


0

이것은 나를 위해 마술을했다. chmod -Rf 0777 스토리지

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.