web-dev-qa-db-fra.com

Laravel Trop d'arguments, arguments attendus "commande" lors de la planification

Cela devrait être direct, mais je ne sais pas pourquoi cela ne fonctionne pas. Je crée une commande dans laravel pour envoyer des rappels d'e-mails birtday le jour de l'anniversaire d'un utilisateur. 

Tout fonctionne bien et la fonction de planification est déclenchée mais vient avec une erreur 

 [Symfony\Component\Console\Exception\RuntimeException]
  Too many arguments, expected arguments "command".

C'est ma commande 

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\User;
class SendBirthdayReminderEmail extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'email:birthday';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Email users a birthday Reminder message';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {

     $users = User::whereMonth('dob', '=', date('m'))->whereDay('dob', '=', date('d'))->get();   
    foreach($users as $user) {   
        Mail::queue('emails.birthday', ['user' => $user], function ($mail) use ($user) {
            $mail->to($user['email'])
                ->from('[email protected]', 'Company')
                ->subject('Happy Birthday!');
        });

     }

    $this->info('Birthday messages sent successfully!');

    }
}

Et voici mon fichier kernel.php

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
     Commands\SendBirthdayReminderEmail::class
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {


        $schedule->command('email:birthday')->dailyAt('13:00')->timezone('Africa/Dar_es_Salaam');
    }

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

Toute aide serait appréciée . Merci :-)

6
bobin56

J'ai trouvé une solution, 

/opt/php70/bin/php /home/sitename/public_html/artisan schedule:run >/dev/null 2>&1

au départ, j'en avais 1 après le calendrier: méthode d'exécution. Comme ci-dessous

/opt/php70/bin/php /home/sitename/public_html/artisan schedule:run 1 >/dev/null 2>&1
2
bobin56

Votre code a l'air bien .. Avez-vous essayé simplement 

php artisan schedule:run

après avoir atteint votre chemin de dossier racine.

1
Mahesh Yadav