问题非常明确。
php artisan cache:clear
有没有绕过命令行,但不使用CLI来清除缓存的方法,我使用的是流行的共享托管服务,但根据我的计划,我没有控制面板访问权限。
我想清除视图缓存。
我看到一个几乎和这个问题相同的问题,但它对我没有帮助。
问题非常明确。
php artisan cache:clear
有没有绕过命令行,但不使用CLI来清除缓存的方法,我使用的是流行的共享托管服务,但根据我的计划,我没有控制面板访问权限。
我想清除视图缓存。
我看到一个几乎和这个问题相同的问题,但它对我没有帮助。
本地机器
在项目根目录的终端中运行 php artisan config:cache
命令。
托管服务器
首先尝试获取托管提供商的终端访问权限,然后在项目根目录中运行 php artisan config:cache
命令。
如果您没有终端访问权限,则可以使用以下技巧。
项目文件夹/bootstrap/cache
config.php
文件注意:避免删除文件,因为这可能会在未来创建问题。建议将文件名更改为重命名。
use Illuminate\Support\Facades\Artisan;
$app->get('/clear-cache', function () {
$code = Artisan::call('cache:clear');
return 'cache cleared';
});
我曾多次使用此页面将快速命令复制并粘贴到composer中,因此我编写了一个命令,可以在一个单一的artisan命令中执行这些命令。
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 . '');
}
}
}
将其放置在app\Console\Commands\Admin
文件夹中
然后在composer中运行命令php artisan traqza:clear-everything
祝编码愉快。
您也可以通过路由器来实现,类似于Francesco的答案,但在路由器配置中减少了混乱。
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>";
}
});
然后通过访问http://myapp.test/artisan/cache-clear等方式运行它们。如果需要添加/编辑有效的Artisan命令,请更新$validCommands数组。
这对我有用。在您的项目中,转到:storage > framework > views。删除其中的所有文件并刷新页面。
Laravel project->bootstarp->cache->delete all files
你可以通过编程方式清除 Laravel 缓存
use Illuminate\Support\Facades\Cache;
Cache::flush();
cache()->flush();
也可以尝试这个
使用命令行界面
php artisan clear:cache
用于使用artisan命令
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/
我相信更有效的方法是使用共享服务器管理面板中的cron作业模块来运行laravel调度程序命令,这将进而调用配置的artisan命令,类似以下内容应该可以完成任务:
* * * * * /usr/bin/php /var/www/web/artisan schedule:run /dev/null 2>&1
使用cron中的调度程序,您可以编辑 \App\Console\Kernel.php 中的调度方法,以调用正确的artisan命令,类似于以下内容:
$schedule->command('queue:work')->cron('* * * * *')->withoutOverlapping();
$schedule->command('route:cache')->cron('0 0 * * *')->withoutOverlapping();
在命令运行后,您可以随时删除上面的行。
Cache::flush(); https://laravel.com/docs/5.7/cache#events 这段代码适用于 Handler 类继承 ExceptionHandler 的情况。