linux — PHP localtime () некорректен при выполнении Apache

Я пытаюсь написать скрипт PHP, который использует получает текущее местное время, используя

localtime(time(), true);

Важно, чтобы это время было таким же, как и местное время на сервере (Европа / Лондон), поскольку есть crontab, который вызывает этот скрипт один раз в час. Также важно, чтобы он учитывал переход на летнее время.

Часы на моем сервере правильные, и когда я запускаю функцию в интерактивной оболочке PHP, возвращается правильное время, однако, когда Apache запускает скрипт, он сообщает час позади, а также tm_isdst бревна falsey.

Я проверил свой файл Apache php.ini, я уверен, что это правильный файл, так как я проверил phpinfo (), но, может быть, есть другие файлы, переопределяющие это?

Я также попытался перезагрузить и перезапустить Apache (успешно), однако он все еще не учитывает правильное время.

Большое спасибо за любую помощь.

1

Решение

У вас есть несколько вариантов, но наиболее распространенными являются следующие:

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');
?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]