В приложении laravel 5.7 у меня проблема с тем, что запланированные задания с отправкой электронной почты получаются в неподходящее время.
в моем Ubuntu 16 под Digital Ocean Server в crontab с командой:
crontab -e
Я добавил строку:
* * * * * cd /var/www/html/the-box-booking && php artisan schedule:run >> /dev/null 2>&1
php в браузере показывает следующее:
PHP Version 7.1.17-1+ubuntu16.04.1+deb.sury.org+1
...
date
date/time support enabled
timelib version 2016.05
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone Asia/Dubai
Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone Asia/Dubai Asia/Dubai
Полагаю, консольная команда использует конфигурации cli.
Я проверяю в командной строке:
php -v
PHP 7.1.17-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: May 5 2018 04:55:21) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.1.17-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
Я открываю /etc/php/7.1/cli/php.ini и вижу:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Dubai
Timezone = Asia/Dubai
В bootstrap / app.php я добавил строку:
date_default_timezone_set('Asia/Dubai');
В app / Console / Kernel.php я добавил строку:
protected function schedule(Schedule $schedule)
{
\Log::info( 'report:available-spaces-by-zones Report run # ' . time() );
$schedule->command('report:available-spaces-by-zones')->daily('18:00');
}
В результате я вижу много информационных строк в моих журналах, но время отправки отчета отличается. Сегодня я получил это в 21:00.
Я перезапустил cron, apache и ОС.
Где ошибка и как ее исправить?
Спасибо!