如何在 cpanel 中运行工匠命令

Posted

技术标签:

【中文标题】如何在 cpanel 中运行工匠命令【英文标题】:How can i run artisan commands in cpanel 【发布时间】:2018-05-22 12:07:55 【问题描述】:

如何在托管在网络中的应用程序中运行这些工匠命令?我的 cpanel 中是否有类似 cmd 的地方可以执行这些命令?提前致谢。

php 工匠清除:缓存 php工匠视图:清除

【问题讨论】:

SSH 访问怎么样? 完成后请务必在此处将网址粘贴到您的网站,以便我们都可以清除您的缓存 【参考方案1】:

现在在 Laravel 5.8 中,你不能将 object 传递给 call() 函数。您必须将 array [] 作为第二个参数传递给 call() func。

Route::get('/clear-cache', function() 
    $output = [];
    \Artisan::call('cache:clear', $output);
    dd($output);
);

【讨论】:

【参考方案2】:

您可以像这样创建一个名为 clear-cache.sh 的简单 bash 脚本:

#!/bin/sh
PHP=/path/to/your/php-binary
PATH=/path/to/your-artisan-install

cd $PATH
$PHP artisan clear:cache
$PHP artisan view:clear

保存脚本并使其可执行(chmod +x clear-cache.sh)。以特定的时间间隔通过 cronjob 运行它,并配置 cron 作业以通过电子邮件向您发送这 2 个命令的输出。这样,每次 cron 运行脚本时,您都会收到一封电子邮件(基本上,cron 会自动发出您的两个命令)并且输出将通过电子邮件发送给您。

当然还有其他方法,比如创建一个 php 脚本并通过 web 调用它

【讨论】:

【参考方案3】:

您可以制定个性化路线,并在需要时调用它:

Route::get('/clear-cache', function() 
    $output = new \Symfony\Component\Console\Output\BufferedOutput;
    \Artisan::call('cache:clear', $output);
    dd($output->fetch());
);

另一种解决方案是通过 ssh 访问您的服务器并运行命令。

【讨论】:

我尝试了个性化路线。我如何知道缓存是否被成功清除? 您可以为输出添加回声。看看答案的更新。 (1/1) FatalErrorException Class 'BufferedOutput' not found - 我得到这个错误。 你必须为其添加完整路径:\Symfony\Component\Console\Output\BufferedOutput【参考方案4】:

试试这个。您可以通过以下代码清除无法访问 ssh shell 的共享托管服务器中托管的所有 laravel 应用程序缓存:

Route::get('/cleareverything', function () 
    $clearcache = Artisan::call('cache:clear');
    echo "Cache cleared<br>";

    $clearview = Artisan::call('view:clear');
    echo "View cleared<br>";

    $clearconfig = Artisan::call('config:cache');
    echo "Config cleared<br>";

    $cleardebugbar = Artisan::call('debugbar:clear');
    echo "Debug Bar cleared<br>";
);

现在运行yourdoamin.com/cleareverything

此代码不会引发任何错误。我已经用过这段代码了。

参考:https://laravel.com/docs/5.2/artisan#calling-commands-via-code

【讨论】:

哦不!!!完全错误....您只是假设缓存成功但您不确定,它也可能失败!!! 我已经在我的各种应用程序中使用了这个代码并成功清除了缓存,我已经确认这个代码没有错误 没有测试代码就放弃投票的人是愚蠢的。我有 3 年的 laravel 应用程序开发经验,我在很多项目中都使用过这段代码。 我尊重你的经验,但很抱歉,这段代码是错误的!当你真的不知道它的输出时,你确保使用 echo 正确地完成了命令...... 是的,我同意你的观点,但你显示缓存已清除,不知道它是否真的在运行这个命令!有时它可能会返回错误,但使用您的代码它只会输出成功!

以上是关于如何在 cpanel 中运行工匠命令的主要内容,如果未能解决你的问题,请参考以下文章

如何在Laravel 5.4中使用ask()测试工匠命令

如何在 Laravel(PHP 工匠)中删除 Auth

如何使用单个工匠命令在 Laravel 8 中创建多个模型?

如何使用自定义工匠命令从数据库中打印一行

无法执行Laravel工匠命令

如何放置 Laravel 并使用工匠命令?