php - santiago - zona horaria apache
obtener la hora del servidor en PHP-problemas de zona horaria (4)
en shell, la hora de mi servidor es ( date
simple en bash): dom 29 de agosto 10:37:12 EDT 2010
cuando ejecuto el código php -r "echo date(''Ymd H:i:s'');"
Recibo: 2010-08-29 10:37:10
pero cuando ejecuto un script php que tiene echo date(''Ymd H:i:s'');
Tengo un tiempo diferente, ya que php piensa que la zona horaria es UTC (la hora del servidor es EDT).
Mi archivo php.ini no tiene una zona horaria establecida, y no me gustaría cambiar nada, ya que no tengo idea de qué efecto tendría en otros sitios que se ejecutan en este servidor.
¿Existe una forma sencilla de obtener la hora del servidor en la zona horaria establecida para el servidor?
¿Ha intentado usar date_default_timezone_set () aquí puede encontrar zonas horarias americanas en http://www.php.net/manual/en/timezones.america.php
De acuerdo con la página del manual de directivas php.ini , la zona horaria no se establece de forma predeterminada si está utilizando una versión anterior a la 5.3. Luego, si date_default_timezone_get
un vistazo a la página de date_default_timezone_get
, usa el siguiente orden para obtener la zona horaria:
* Reading the timezone set using the date_default_timezone_set() function (if any)
* Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0)
* Reading the value of the date.timezone ini option (if set)
* Querying the host operating system (if supported and allowed by the OS)
UTC es el valor predeterminado si todos esos fallan, por lo que probablemente sea un buen punto de partida.
El servidor siempre debe tener una zona horaria especificada en el archivo php.ini
. PHP 5.3 incluso genera avisos si ese no es el caso y la extensión DateTime
generará excepciones si intenta crear objetos sin especificar explícitamente una zona horaria (con un objeto DateTimezone
) o tener una predeterminada (ya sea a través de date.timezone
o date_default_timezone_set
).
Por lo que estás describiendo, los escenarios más probables son:
- Se están utilizando diferentes archivos php.ini en los dos escenarios. En el primer caso, no se especifica una zona horaria predeterminada, por lo que PHP intenta deducir uno de la zona horaria de todo el sistema de la máquina.
- El (segundo) script llama a
date_default_timezone_set(''UTC'')
o equivalente.
Tarde para la fiesta, pero si desea establecer la zona horaria sin editar php.ini, puede poner en el código php una de estas cadenas:
date_default_timezone_set(''GMT'');
date_default_timezone_set(''Europe/Zurich'');
date_default_timezone_set(''America/New_York'');