PHP дает ошибку даты для некоторых (но не всех) посетителей сайта - PullRequest
0 голосов
/ 23 ноября 2011

Я пишу скрипт, который использует функцию date () для регистрации.

В разных местах я использую date('Y-m-d'), date('Y-m-d H-i-s') и date(DATE_RFC822).

Когда я захожу на страницу со своего компьютера, используя Safari, Firefox и Chrome в Mac OS 10.6, страница загружается должным образом и не приводит к ошибке.

Когда коллега (которая находится в той же общей географической зоне и в том же часовом поясе, что и я) заходит на страницу со своего компьютера, используя ту же ОС и браузеры, что и я, она получает следующую ошибку в all браузеры:

date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EST/-5.0/no DST' instead

Я предположил, что функция date () не зависит от часового пояса клиента, но, похоже, это говорит об обратном.

Я решил проблему, указав часовой пояс через date_default_timezone_set("America/New_York"); , но я хотел бы понять, почему клиент должен иметь какое-либо отношение к часовому поясу сервера.

Как и почему часовой пояс клиента влияет на обработку часовых поясов в PHP, особенно в отношении функции date () ?

Версия PHP: 5.2.5

Больше информации от phpinfo ():

date/time support   enabled
"Olson" Timezone Database Version   2007.9
Timezone Database   internal
Default timezone    US/Eastern`

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Спасибо всем за отзывы.

Я решил, что это на самом деле из-за того, что веб-сервер распределен по двум узлам сервера.Один узел работает под управлением PHP 5.2.5, а другой - под управлением 5.1.6.Каждый раз, когда я заходил на страницу, меня обслуживал узел PHP 5.2.5, а другой человек обслуживал узел с более старой версией PHP.Таким образом, даже несмотря на то, что мы обращались к одному и тому же URL, мы фактически обслуживались разными веб-серверами.Очень плохая ситуация.

Решение, конечно, состоит в том, чтобы сделать узлы идентичными друг другу.Как вы все сказали, клиент никак не может повлиять на функцию date ().

0 голосов
/ 23 ноября 2011

Ошибки / уведомления PHP выводятся сразу после их запуска (если вы не используете буфер вывода), поэтому возможно , что ваши браузеры обнаружили ошибку / уведомление за пределами * Тег 1005 * и так от него отказались, тогда как браузеры вашего друга, возможно, снова включили его обратно в DOM ~~

0 голосов
/ 23 ноября 2011

Невозможно. У вас может быть ошибка в вашем коде в некоторой зависимой от агента пользователя области, но в браузере, ОС или компьютере пользователя нет ничего, что могло бы повлиять на код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...