Я пытаюсь написать скрипт PHP, который использует получает текущее местное время, используя
localtime(time(), true);
Важно, чтобы это время было таким же, как и местное время на сервере (Европа / Лондон), поскольку есть crontab, который вызывает этот скрипт один раз в час. Также важно, чтобы он учитывал переход на летнее время.
Часы на моем сервере правильные, и когда я запускаю функцию в интерактивной оболочке PHP, возвращается правильное время, однако, когда Apache запускает скрипт, он сообщает час позади, а также tm_isdst бревна falsey.
Я проверил свой файл Apache php.ini, я уверен, что это правильный файл, так как я проверил phpinfo (), но, может быть, есть другие файлы, переопределяющие это?
Я также попытался перезагрузить и перезапустить Apache (успешно), однако он все еще не учитывает правильное время.
Большое спасибо за любую помощь.
У вас есть несколько вариантов, но наиболее распространенными являются следующие:
1. Перечислите свои переменные для проверки
Проверьте, установлен ли в вашем php.ini часовой пояс с помощью <?php phpinfo(); ?>
Затем добавьте эту функцию в пустой файл с именем файла, т.е. phpinfo.php и запросите этот файл через вашу веб-среду.
Вы должны искать эту переменную date.timezone=
, Затем попробуйте добавить его в свой локальный файл php.ini. Больше информации о PHP.Net. Если у вас нет доступа к файлу php.ini, перейдите к шагу 2.
2. Добавьте часовой пояс в ваш php файл напрямую
Если вы используете какой-либо тип MVC или приложение, которое использует любые виды файлов начальной загрузки вместе, тогда лучше всего не добавлять date_default_timezone_set();
в ваш первый php-файл, который вы вызываете. Часовые пояса, поддерживаемые в ЕС
Для простого теста, чтобы увидеть, меняется ли часовой пояс или нет
<?php
date_default_timezone_set('Europe/London');
echo date('Y-m-d H:i:s');
?>
Других решений пока нет …