PHP: Как прочитать текущую дату / время с сервера, а не из php.ini - PullRequest
3 голосов
/ 21 марта 2012

Вот моя проблема:

echo date('Y-m-d H:i:s'); 
echo date('Y-m-d H:i:s', mktime());  

echo exec('date');

Вывод:

2012-03-21 08:45:51
2012-03-21 08:45:51

Wed Mar 21 10:45:51 EDT 2012

Время сервера отключено через 2 часа после времени, возвращаемого php date ();или любая другая функция даты / времени php.Это происходит потому, что время сервера установлено на EST и PHP.INI date.timezone = "America / Denver"

Мне нужно синхронизировать эти два, используя date_default_timezone_set, но я заранее не знаю, в чем разница.

Есть ли другой способ получить время на локальном сервере, кроме вызова exec?

UPD: я знаю, что настройка php.ini неверна и я могу ее изменить.Проблема в том, что этот скрипт будет работать на никто не знает, что это за серверы.Я не могу перейти к каждому из них и исправить файл php.ini.Я также не знаю заранее, какой часовой пояс будет на этих серверах.Мне нужно динамическое решение, которое будет работать везде.

Ответы [ 4 ]

2 голосов
/ 25 июля 2012
Change value of date.timezone from php.ini [Date] and restart your server.
You can get your date.timezone value form-
http://au.php.net/manual/en/timezones.php


For Bangladesh I set in my php.ini [Date]
date.timezone = Asia/Dhaka


You get your php.ini in C:\xampp\php address for XAMP server and Windows.
2 голосов
/ 21 марта 2012

Вы можете изменить часовой пояс даты и распечатать дату

ini_set('date.timezone', 'America/Los_Angeles');
0 голосов
/ 22 марта 2012

На * nix, вы можете использовать параметры форматирования для date, чтобы получить то, что вам нужно:

  • date +%z - часовой пояс (чч)
  • date +%:z - часовой пояс(чч: мм)
  • date +%Z - сокращение часового пояса (например, «EDT»)

Выполнение системного вызова (например, echo exec('date +%z');) обойдет любые настройки INI согласно date_default_timezone_get .Обратите внимание, что эта функция выдает E_WARNING, если она читает из системного времени, а на самом деле из PHP 5.4 она даже не позволяет читать из него - особенно потому, что на нее нельзя положиться.

Чтобы быть последовательным,независимо от настроек сервера вы должны использовать UTC в вашем приложении.Для удобства использования GMT достаточно близко к UTC для большинства целей, поэтому вы можете использовать gmdate().

0 голосов
/ 21 марта 2012

ORнекоторые хосты дают вам возможность редактировать php.iniискать php config в cpanel

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