Laravel 5 – Clear Cache in Shared Hosting Server

PhpLaravelLaravel 5Command Line-Interface

Php Problem Overview


The question is pretty clear.

php artisan cache:clear

Is there any workaround to clear the cache like the above command but without using CLI. I am using a popular shared hosting service, but as per my plan, I don't have control panel access.

I want to clear the views cache.

I saw a question almost the same like this, but it doesn't help me.

Php Solutions


Solution 1 - Php

You can call an Artisan command outside the CLI.

Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    // return what you want
});

You can check the official doc here http://laravel.com/docs/5.0/artisan#calling-commands-outside-of-cli


Update

There is no way to delete the view cache. Neither php artisan cache:cleardoes that.

If you really want to clear the view cache, I think you have to write your own artisan command and call it as I said before, or entirely skip the artisan path and clear the view cache in some class that you call from a controller or a route.

But, my real question is do you really need to clear the view cache? In a project I'm working on now, I have almost 100 cached views and they weight less then 1 Mb, while my vendor directory is > 40 Mb. I don't think view cache is a real bottleneck in disk usage and never had a real need to clear it.

As for the application cache, it is stored in the storage/framework/cache directory, but only if you configured the file driver in config/cache.php. You can choose many different drivers, such as Redis or Memcached, to improve performances over a file-based cache.

Solution 2 - Php

Go to laravelFolder/bootstrap/cache then rename config.php to anything you want eg. config.php_old and reload your site. That should work like voodoo.

Solution 3 - Php

As I can see: http://itsolutionstuff.com/post/laravel-5-clear-cache-from-route-view-config-and-all-cache-data-from-applicationexample.html

is it possible to use the code below with the new clear cache commands:

//Clear Cache facade value:
Route::get('/clear-cache', function() {
    $exitCode = Artisan::call('cache:clear');
    return '<h1>Cache facade value cleared</h1>';
});

//Reoptimized class loader:
Route::get('/optimize', function() {
    $exitCode = Artisan::call('optimize');
    return '<h1>Reoptimized class loader</h1>';
});

//Route cache:
Route::get('/route-cache', function() {
    $exitCode = Artisan::call('route:cache');
    return '<h1>Routes cached</h1>';
});

//Clear Route cache:
Route::get('/route-clear', function() {
    $exitCode = Artisan::call('route:clear');
    return '<h1>Route cache cleared</h1>';
});

//Clear View cache:
Route::get('/view-clear', function() {
    $exitCode = Artisan::call('view:clear');
    return '<h1>View cache cleared</h1>';
});

//Clear Config cache:
Route::get('/config-cache', function() {
    $exitCode = Artisan::call('config:cache');
    return '<h1>Clear Config cleared</h1>';
});

It's not necessary to give the possibility to clear the caches to everyone, especially in a production enviroment, so I suggest to comment that routes and, when it's needed, to de-comment the code and run the routes.

Solution 4 - Php

Config caching The laravel config spreads across dozens of files, and including every one of them for each request is a costly process. To combine all of your config files into one, use:

php artisan config:cache

Keep in mind that any changes to the config will not have any effect once you cache it. To refresh the config cache, run the above command again. In case you want to completely get rid of the config cache, run

php artisan config:clear

Routes caching Routing is also an expensive task in laravel. To cache the routes.php file run the below command:

php artisan route:cache

Mind that it doesn't work with closures. In case you're using closures this is a great chance to move them into a controller, as the artisan command will throw an exception when trying to compile routes that are bound to closures instead of proper controller methods. In the same as the config cache, any changes to routes.php will not have any effect anymore. To refresh the cache, run the above command everytime you do a change to the routes file. To completely get rid of the route cache, run the below command:

php artisan route:clear

Classmap optimization

It's not uncommon for a medium-sized project to be spread across hundreds of PHP files. As good coding behaviours dictate us, everything has its own file. This, of course, does not come without drawbacks. Laravel has to include dozens of different files for each request, which is a costly thing to do.

Hence, a good optimization method is declaring which files are used for every request (this is, for example, all your service providers, middlewares and a few more) and combining them in only one file, which will be afterwards loaded for each request. This not different from combining all your javascript files into one, so the browser will have to make fewer requests to the server.

The additional compiles files (again: service providers, middlewares and so on) should be declared by you in config/compile.php, in the files key. Once you put there everything essential for every request made to your app, concatenate them in one file with:

php artisan optimize --force

Optimizing the composer autoload

This one is not only for laravel, but for any application that's making use of composer.

I'll explain first how the PSR-4 autoload works, and then I'll show you what command you should run to optimize it. If you're not interested in knowing how composer works, I recommend you jumping directly to the console command.

When you ask composer for the App\Controllers\AuthController class, it first searches for a direct association in the classmap. The classmap is an array with 1-to-1 associations of classes and files. Since, of course, you did not manually add the Login class and its associated file to the classmap, composer will move on and search in the namespaces. Because App is a PSR-4 namespace, which comes by default with Laravel and it's associated to the app/ folder, composer will try converting the PSR-4 class name to a filename with basic string manipulation procedures. In the end, it guesses that App\Controllers\AuthController must be located in an AuthController.php file, which is in a Controllers/ folder that should luckily be in the namespace folder, which is app/.

All this hard work only to get that the App\Controllers\AuthController class exists in the app/Controllers/AuthController.php file. In order to have composer scanning your entire application and create direct 1-to-1 associations of classes and files, run the following command:

composer dumpautoload -o

Keep in mind that if you already ran php artisan optimize --force, you don't have to run this one anymore. Since the optimize command already tells composer to create an optimized autoload.

Solution 5 - Php

This package is for php ^7.0 and ^laravel5.5.

Use this package in cronjob that I have created for this purpose only. I was also facing same situation. https://packagist.org/packages/afrazahmad/clear-cached-data Install it and run:

php artisan clear:data

and it will run the following commands automcatically

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache

Hope it helps.

If you want to run it automatically at specific time then you will have to setup cronjob first. e.g.

 in app/console/kernel.php

In schedule function:

$schedule->command('clear:data')->dailyAt('07:00');

Solution 6 - Php

> Basically I want to clear the views cache.

There is now a command in Laravel 5.1 for that

php artisan view:clear

Solution 7 - Php

You can connect via FTP and clear storage\framework\views folder for laravel 5 or app\storage\views for laravel 4.

Solution 8 - Php

To clear all cache outside CLI, Do this; This works for me.

Route::get('/clear', function() {

   Artisan::call('cache:clear');
   Artisan::call('config:clear');
   Artisan::call('config:cache');
   Artisan::call('view:clear');

   return "Cleared!";

});

Solution 9 - Php

This command will clear all kinds of cache at once. :

$ php artisan optimize:clear

This is an alias of :

$ php artisan view:clear
$ php artisan config:clear
$ php artisan route:clear
$ php artisan cache:clear
$ php artisan clear-compiled

This method added on Laravel 5.7

Solution 10 - Php

php artisan view:clear

will clear the cached views

Solution 11 - Php

Local Machine

Run php artisan config:cache in terminal of your project root directory.

On Hosting Server

First try to get access of terminal on from hosting provider. Then run php artisan config:cache command in your project root directory.

If you don't have terminal access the follow this trick.

  1. go to this directory project-folder/bootstrap/cache
  2. rename or delete config.php file

Note: avoid to delete file it may create problems in future by renaming you can change file name so I suggest to rename file name.

Solution 12 - Php

You can do this if you are using Lumen from Laravel on your routes/web.php file:

use Illuminate\Support\Facades\Artisan;

$app->get('/clear-cache', function () {
    $code = Artisan::call('cache:clear');
    return 'cache cleared';
});

Solution 13 - Php

Used this page a few times to copy and paste quick commands into composer, so I wrote a command that does these commands in one single artisan command.

namespace App\Console\Commands\Admin;

use Illuminate\Console\Command;

class ClearEverything extends Command
{

    protected $signature = 'traqza:clear-everything';

    protected $description = 'Clears routes, config, cache, views, compiled, and caches config.';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        $validCommands = array('route:clear', 'config:clear', 'cache:clear', 'view:clear', 'clear-compiled', 'config:cache');
        foreach ($validCommands as $cmd) {
            $this->call('' . $cmd . '');

        }
    }
}

Place in app\Console\Commands\Admin folder

then run command in composer php artisan traqza:clear-everything

Happy coding.

Github -> https://github.com/Traqza/clear-everything

Solution 14 - Php

You can do it via router as well, similar to Francesco answer but with less clutter in router config

Route::get('/artisan/{cmd}', function($cmd) {
    $cmd = trim(str_replace("-",":", $cmd));
    $validCommands = ['cache:clear', 'optimize', 'route:cache', 'route:clear', 'view:clear', 'config:cache'];
    if (in_array($cmd, $validCommands)) {
        Artisan::call($cmd);
        return "<h1>Ran Artisan command: {$cmd}</h1>";
    } else {
        return "<h1>Not valid Artisan command</h1>";
    }
});

Then run them via visiting http://myapp.test/artisan/cache-clear etc If you need to add/edit valid Artisan commands just update the $validCommands array.

Solution 15 - Php

This worked for me. In your project go to: storage > framework > views. Delete all the files in there and refresh your page.

Solution 16 - Php

Try this also

for cli

php artisan clear:cache

for use artisan command

 Route::get('/clear-cache', function() {
 $exitCode = Artisan::call('cache:clear');
 return 'Application cache cleared';

});

[https://www.tutsmake.com/laravel-clear-cache-using-artisan-command-cli/][1]

  [1]: https://www.tutsmake.com/laravel-clear-cache-using-artisan-command-cli/

Solution 17 - Php

While I strongly disagree with the idea of running a laravel app on shared hosting (a bad idea all around), this package would likely solve your problem. It is a package that allows you to run some artisan commands from the web. It's far from perfect, but can work for some usecases.

https://github.com/recca0120/laravel-terminal

Solution 18 - Php

Cache::flush(); https://laravel.com/docs/5.7/cache#events This work in the class Handler extends ExceptionHandler

Solution 19 - Php

I believe the more efficient approach to this is to use the cron job module in the shared server admin panel to run the laravel scheduler command which will in turn call the configured artisan command, something like this should do the job:

* * * * * /usr/bin/php /var/www/web/artisan schedule:run /dev/null 2>&1

With scheduler setup in cron, you can edit the schedule method in \App\Console\Kernel.php to call the right artisan command, something like this:

$schedule->command('queue:work')->cron('* * * * *')->withoutOverlapping();
$schedule->command('route:cache')->cron('0 0 * * *')->withoutOverlapping();

You can always delete the lines above after the commands run

Solution 20 - Php

To Clear Cache Delete all files in cache folder in your shared hosting

Laravel project->bootstarp->cache->delete all files

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRinto GeorgeView Question on Stackoverflow
Solution 1 - PhpMarco PallanteView Answer on Stackoverflow
Solution 2 - PhpThe Billionaire GuyView Answer on Stackoverflow
Solution 3 - PhpFrancescoView Answer on Stackoverflow
Solution 4 - PhpMaulikView Answer on Stackoverflow
Solution 5 - PhpAfraz AhmadView Answer on Stackoverflow
Solution 6 - PhpLaurenceView Answer on Stackoverflow
Solution 7 - Phpgandra404View Answer on Stackoverflow
Solution 8 - PhpAmos ChihiView Answer on Stackoverflow
Solution 9 - PhpstaView Answer on Stackoverflow
Solution 10 - PhpSpidiView Answer on Stackoverflow
Solution 11 - Phpmsayubi76View Answer on Stackoverflow
Solution 12 - PhppableirosView Answer on Stackoverflow
Solution 13 - PhpkrayView Answer on Stackoverflow
Solution 14 - PhpchemicView Answer on Stackoverflow
Solution 15 - PhprogramaticView Answer on Stackoverflow
Solution 16 - PhpDeveloperView Answer on Stackoverflow
Solution 17 - PhpBen YankeView Answer on Stackoverflow
Solution 18 - PhpBilal HamidView Answer on Stackoverflow
Solution 19 - PhpkorwalskiyView Answer on Stackoverflow
Solution 20 - PhpßãlãjîView Answer on Stackoverflow