errore di fuso orario predefinito in php
-
22-07-2019 - |
Domanda
Ho ricevuto il seguente errore / avviso durante il tentativo di installare Kohana / SilverStripe.
Cosa significa e cosa devo fare per questo?
Warning:
date_default_timezone_get():
It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting 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 'Asia/Calcutta' for '5.5/no DST' instead in C:\Server\apache\htdocs\kohana\system\core\Kohana.php on line 136
Grazie in anticipo!
Soluzione
Questo non è un errore, ma un avvertimento, quindi non blocca il funzionamento della tua app.
Imposta esplicitamente il fuso orario corretto usando date_default_timezone_set () in C: \ Server \ apache \ htdocs \ kohana \ system \ core \ Kohana.php sulla linea 136
Devi scegliere tra fusi orari validi
Modifica
Come lo stesso messaggio di avviso afferma che in realtà hai una scelta più pulita rispetto alla modifica di un file software di terze parti. Cioè configurare PHP come dovrebbe essere.
- modifica il tuo
php.ini
e regola il valore didate.timezone = America / New_York
o
- usa una direttiva
php_value
nella configurazione del tuo server web per impostarla nella tua configurazione vhost o.htaccess
:php_value date. fuso orario America / New_York
Altri suggerimenti
Il commento dell'OP alla sua stessa domanda implica che il fuso orario predefinito non può essere impostato in php.ini, il che non è vero - in effetti, in molti casi impostarlo è preferito . E poiché questa risposta SO è uno dei primi successi in Google per "errore di fuso orario predefinito php", salverò altri un po 'di sanità mentale persa.
Una causa molto comune di questo errore non è tanto l'ortografia errata della città o del paese della zona (ad esempio "New York", "Los Angeles") nel file php.ini in uso, ma invece di includere incorporato spazi anziché caratteri di sottolineatura nell'identificatore, e quindi "errore ortografico" la costante completa.
Questo farà anche quello che vuoi, senza doverlo impostare su ogni pagina in fase di esecuzione (verificato su PHP 5.4 e 5.3, in Windows, Linux e OSX):
In php.ini :
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/New_York
; ^^^^^^^^^^^^^^^^ * Must_Use_Underscores *
Inoltre, se hai controllato e ricontrollato l'ortografia e certo è corretto, assicurati di modificare il file phi.i effettivo che viene utilizzato:
Contesto Web (creare un file di test test.php , quindi confermare date.timezone
):
<?php phpinfo(); ?>
Riga di comando Linux / OSX:
$ php -i | grep "timezone"
Windows della riga di comando:
C:\> php -i | find "timezone"
L'ordine di precedenza per il recupero della configurazione predefinita del fuso orario data è spiegato in dettaglio qui .
Se non hai la possibilità di cambiare php.ini
, aggiungilo al tuo _ss_environment.php
o mysite / _config.php
file:
date_default_timezone_set ( '...');
dove ...
è uno dei fusi orari PHP validi.