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

저는 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이 나에게 말을 걸었습니다. 그러나 캐시 데이터와 뷰는 스토리지에 있습니다.

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

미리 감사드립니다!



답변

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


답변

일반적으로 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브라우저 에서 경로 를 호출하십시오 .

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


답변

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


답변

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

스토리지 / 프레임 워크

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

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

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

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


답변

이러한 유형의 문제는 일반적으로 한 서버를 다른 서버로, 한 폴더를 다른 폴더로 마이그레이션하는 동안 발생합니다. Laravel은 폴더가 다른 경우이 문제가 발생할 때 캐시와 구성 (파일 이름)을 유지합니다.

솔루션 실행 다음 명령 :

php artisan config:cache

https://laravel.com/docs/5.6/configuration#configuration-caching


답변

Windows의 Apache + WSL

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

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

해결책

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

$ php artisan optimize

나에게 충분했다.


답변

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

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

php artisan view:clear

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

php artisan config:cache