【问题标题】:How can i run artisan commands in cpanel如何在 cpanel 中运行工匠命令
【发布时间】:2023-04-05 19:15:01
【问题描述】:

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

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

【问题讨论】:

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

标签: laravel cpanel laravel-artisan


【解决方案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 正确地完成了命令......
      • 是的,我同意你的观点,但你显示缓存已清除,不知道它是否真的在运行这个命令!有时它可能会返回错误,但使用您的代码它只会输出成功!
      猜你喜欢
      • 2019-05-20
      • 2014-08-30
      • 2017-10-03
      • 2016-04-10
      • 2020-04-06
      • 2021-05-15
      • 2018-11-30
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多