可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a project on Laravel 5 and I work with it at the office and at home too. It works fine, but recently at home it stopped working. Laravel show me two ErrorException
file_put_contents(G:\project\storage\framework\views/751d8a0fd8a7d4138c09ceb6a34bb377aa2d6265.php):
failed to open stream: No such file or directory
and
file_put_contents(G:\project\storage\framework/sessions/aIXycR4LIAUBVIqZu0T590paOMIpV8vfZGIroEp0):
failed to open stream: No such file or directory
I'm searching problem decision with Google and find information about correct rights. All advice is about Linux, but I'am work in Windows at the office and at home too.
When I try to clear application cache and view cache, artisan talk to me - ...cleared. But cache data and views are present in storage.
How can I fix this problem?
Thanks in advance!
回答1:
The best way to solve this problem is, go to directory "laravel/bootstrap/cache" and delete config.php file. or you can rename it as well like config.php.old
And your problem will be fix.
Happy coding :-)
回答2:
You should typically run the php artisan config:cache
command as part of your production deployment routine. I suggest you
- Remove the configuration cache file
- Flush the application cache
- Create a cache file for faster configuration loading
To do this, run the following Artisan commands on your command line
php artisan config:clear
php artisan cache:clear
php artisan config:cache
Where you don't have access to the command line on your server, you can programmatically execute commands by adding the following to your routes:
Route::get('/clear-cache', function() {
$exitCode = Artisan::call('config:clear');
$exitCode = Artisan::call('cache:clear');
$exitCode = Artisan::call('config:cache');
return 'DONE'; //Return anything
});
And then call the clear-cache
route from your browser.
I hope this is helpful.
回答3:
After some research I understand - I have very similar, but different root project locations and its cached in /bootstrap/cache
. After cache clearing project started.
回答4:
Actually I faced this issue when I moved my project from server to local.
in
storage/framework
four basic folders are required cache, sessions, testing, views
In My case sessions was missing might be in gitignore.
So I manually created session folder and refreshed browser and it was working.
So any of the missing folder if we delete this problem can be solved.
回答5:
This type of issue generally occurs while migrating one server to another, one folder to another. Laravel keeps the cache and configuration (file name ) when the folder is different then this problem occurs.
Solution Run Following command:
php artisan config:cache
https://laravel.com/docs/5.6/configuration#configuration-caching
回答6:
In case of shared hosting when you do not have command line access simply navigate to laravel/bootstrap/cache folder and delete (or rename) config.php and you are all done!
回答7:
Apache + WSL on windows
This is a silly mistake, and a different answer compared to the others, but I'll add it because it happened to me.
If you use WSL (linux bash on windows) to manage your laravel application, while using your windows apache to run your server, then running any caching commands in the wsl will store the linux path rather than the windows path to the sessions and other folders.
Solution
Simply run the cache clearing commands in the powershell, rather than in WSL.
$ php artisan optimize
Was enough for me.
回答8:
Try with these commands that have been useful with those errors
path\project\storage\framework\views...
php artisan view:clear
path\project\storage\framework/sessions...
php artisan config:cache
回答9:
Maybe there is an issue with your composer file. You could try:
- composer install installs the vendor packages according to
composer.lock (or creates composer.lock if not present),
composer update always regenerates composer.lock and installs the
lastest versions of available packages based on composer.json
composer dump-autoload won’t download a thing. It just regenerates
the list of all classes that need to be included in the project (autoload_classmap.php). Ideal for when you have a new class inside your project. Ideally, you execute composer dump-autoload -o , for a
faster load of your webpages. The only reason it is not default, is because it takes a bit longer to generate (but is only slightly noticeable)
source
回答10:
The reason for this problem is the cache files in localhost. According to that I've tried several things as follows to clear the cache on my project, but every time I've failed.
- Tried to clear cahe commands by changing web.php file (with artisan codes)
- Tried to clear cache by connecting SSH (via PUTTY)
- Tried to host my project in Sub domain within create a new Public directory
So I've found a solution for this problem after each and every above steps failed and it worked for me perfectly. I deleted the cache.php file in host_route/bootstrap/cache directory.
I think this answer will help your problem.
回答11:
In my case it was not anything that could be fixed with php artisan commands. The issue was folder permissions for the /storage folder. The error did not make that clear.
回答12:
The best way to solve this problem is, go to directory laravel/bootstrap/cache
and delete all files from cache.
To do this, run the following Artisan commands on your command line
1. php artisan config:clear
2. php artisan cache:clear
3. php artisan config:cache
In your panel or server, you can execute commands by adding the following to your routes:
Route::get('/clear-cache', function() {
$run = Artisan::call('config:clear');
$run = Artisan::call('cache:clear');
$run = Artisan::call('config:cache');
return 'FINISHED';
});
And then call the www.yourdomain.com/clear-cache
route from your browser.
回答13:
If you are running laravel inside docker then access its filesystem
$ docker exec -it name-of-laravel-container /bin/bash
Next navigate to your laravel projects root directory. Make sure that you have inside storage/framework folder:
- cache
- sessions
- testing
- views
And they should be both readable and writable.
回答14:
I had similar problems because of .gitignore for the /storage
folder on first machine, then cloned repository on second machine and laravel was revision to write down sessions cache
So, manually creating folder /storage/sessions
might be an solution..