[英]Laravel 8 Schedule Task not sending Email on Cpanel
我想使用 Laravel 8 每分鍾通過任務調度程序發送一個 email。
下面是我在 Kernel.php 上的代碼
$schedule->call(function () {
$adminController = new AdminController();
$adminController->test();
})->everyMinute();
在管理員 Controller 我有一個方法叫做測試
public function test()
{
try {
$fp = fopen('cronJobTest.txt', 'a');
fwrite($fp, "Testing Started. ");
fclose($fp);
$email = new \stdClass();
$email->subject = "Cron Job Test";
$email->greetings = "Hi, Tested";
$email->message1 = "This is a cron job tester";
$email->btn_text = 'Test';
$email->message2 = "";
$email->url = "dashboard/test";
\Illuminate\Support\Facades\Notification::route('mail', 'myemailaddressHere@gmail.com')->notify(new EmailNotification($email));
}catch (Exception $exception){
$fp = fopen('cronJobTest.txt', 'a');
fwrite($fp, "Failed with exception ".$exception->getMessage());
fclose($fp);
}
}
然后在我的本地機器上運行命令:
php artisan schedule:work
但是,將源代碼上傳到共享主機 cpanel 並設置 Cron 作業后,調度程序不會發送 email。
我確信 test() 方法已被觸發,因為如果您查看 test() 方法,我會在每次調用該方法時創建一個文件“cronJobTest.txt”並附加文本“Test Started”。
在我的 web 路由中,我創建了一個指向 test() 方法的路由,如果我通過該路由調用該方法,則會發送 email。 即https://mylaraveldomain.com/test
Route::get("test", [AdminController::class, 'test']);
但是,如果從調度程序觸發,相同的方法不會發送 email。
這可能是什么原因造成的?
您的服務器中有 cron 嗎? 如果不是,那就是問題所在。 請參閱 此頁面。
編輯:您是否確認 cron 運行正常? 如果沒有,請先放置一個記錄某些內容的 everyMinute 作業。 首先檢查日志是否顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.