Laravel 5 - 清除共享托管服务器缓存

162

问题非常明确。

php artisan cache:clear

有没有绕过命令行,但不使用CLI来清除缓存的方法,我使用的是流行的共享托管服务,但根据我的计划,我没有控制面板访问权限。

我想清除视图缓存。

我看到一个几乎和这个问题相同的问题,但它对我没有帮助。


2
在共享主机上运行Laravel是疯狂的,我认为,正是因为这种原因。你如何运行迁移? - ceejayoz
@ceejayoz.. 其实我刚开始这个项目,也是我的第一个 Laravel 项目。我还没有涉及到这个迁移的事情... - Rinto George
14
在共享主机上运行 Laravel 真的很疯狂。但这就是现实,有时候你不得不这么做,因为别无选择。 - elb98rm
这在 Laravel 8 中有效。 - Azade
21个回答

4

本地机器

在项目根目录的终端中运行 php artisan config:cache 命令。

托管服务器

首先尝试获取托管提供商的终端访问权限,然后在项目根目录中运行 php artisan config:cache 命令。

如果您没有终端访问权限,则可以使用以下技巧。

  1. 进入此目录 项目文件夹/bootstrap/cache
  2. 重命名或删除 config.php 文件

注意:避免删除文件,因为这可能会在未来创建问题。建议将文件名更改为重命名。


这个回答没有提供任何尚未发布的信息。 - Daniel W.
@DanielW。关于什么信息? - msayubi76
艺匠命令已经在另一个答案中发布,还可以重命名或删除config.php文件。你的回答有什么新的内容? - Daniel W.
是的,你说得没错。但是这个答案详细说明了你可以在本地服务器、具有受限访问权限的共享服务器以及具有完全访问权限的专用服务器上以最大方式解决问题的方法。 - msayubi76

2
如果你正在使用 Laravel 中的 Lumen,你可以在 routes/web.php 文件中这样做:
use Illuminate\Support\Facades\Artisan;

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

2

我曾多次使用此页面将快速命令复制并粘贴到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

祝编码愉快。

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


1

您也可以通过路由器来实现,类似于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数组。


1

这对我有用。在您的项目中,转到:storage > framework > views。删除其中的所有文件并刷新页面。


1
清除缓存:在您的共享主机中删除缓存文件夹中的所有文件。
Laravel project->bootstarp->cache->delete all files

1

你可以通过编程方式清除 Laravel 缓存

use Illuminate\Support\Facades\Cache;

Cache::flush();
cache()->flush();

1

0

我相信更有效的方法是使用共享服务器管理面板中的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();

在命令运行后,您可以随时删除上面的行。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接