私はそれにまっすぐに切ります。タスクスケジューラがcronジョブで自動的に実行されておらず、次のコマンドを実行した場合にのみ機能します。
php artisan schedule:run
このhandle()
関数で行っているのは次のとおりです。
\Log::info('scheduler running @' . \Carbon\Carbon::now() );
これは完全に実行され、コマンドの実行時にログに記録されるため、コマンドに問題はないことがわかりますがartisan
、cronジョブ自体、またはローカルホストの構成内の何かです。
crontab
エントリーには2つの方法を試しました。
* * * * * php Sites/projectname/artisan schedule:run >> /dev/null 2>&1
* * * * * cd Sites/projectname; php artisan schedule:run >> /dev/null 2>&1
どちらも機能しておらずapp/Kernel.php
、schedule()
このコードを持っている関数のように、毎分ログを取得する必要があります。$schedule->command('send:email')->everyMinute();
php artisan cache:clear
Laravelサーバーを再起動して、Apacheサーバーを再起動してLaravelキャッシュをクリアしようとしました。sudo apachectl restart
どんなヒーローもその日を救うことができますか?
ありがとう
解決済み
@MortaddaJafarが問題を分類してくれたので、クレジットはすべて彼に渡されます。
基本的に私のLaravelphpバージョン5.6.4
とapachephpサーバーバージョンは5.6.30
そうだったので、私のPHPバージョンはsplat演算子をサポートしていなかったので、これが互換性の問題を引き起こしていました。-q
cronに配置するphp -q
と、エラーメッセージがに送信されるときに問題をデバッグできました/var/mail/nick
。
この問題を解決するには、PHPバージョンへの直接パスを適用してcronを実行するだけで、バージョンの問題を回避できます。実行which php
してパスを取得し、これをcronに追加します。
* * * * * cd Sites/projectname; /usr/local/bin/php -q artisan schedule:run >> /dev/null 2>&1
これが同様の問題に直面している誰かに役立つことを願っています。
ニック。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加