web-dev-qa-db-fra.com

"date (): il n'est pas prudent de s'appuyer sur les paramètres de fuseau horaire du système ..."

J'ai eu cette erreur quand j'ai demandé à mettre à jour le PHP version de 5.2.17 à PHP 5.3.21 sur le serveur.

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  date(): 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 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 86</p>

</div>
Warning: date(): 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 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 86

Warning: date(): 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 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 99
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  date(): 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 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 99</p>

</div>
338
user1852837

Vous devrez probablement placer le fuseau horaire dans une ligne de configuration de votre fichier php.ini. Vous devriez avoir un bloc comme celui-ci dans votre fichier php.ini:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/New_York

Sinon, ajoutez-le (en remplaçant le fuseau horaire par le vôtre). Après la configuration, assurez-vous de redémarrer httpd (service httpd restart).

Voici la liste des fuseaux horaires pris en charge .

534
CtrlX

Si vous ne pouvez pas modifier votre configuration de php.ini, vous pouvez également utiliser l'extrait de code suivant au début de votre code:

date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want

La liste des fuseaux horaires peut être trouvée à http://www.php.net/manual/fr/timezones.php .

189
Babatunde Adeyemi

Ajoutez ce qui suit dans votre fichier index.php. Je suis tombé dessus pour la première fois en déplaçant mon application de mon serveur XAMPP vers Apache 2.2 et PHP 5.4 ...

Je vous conseillerais de le faire dans votre fichier index.php au lieu du fichier php.ini.

if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}
69
Justis Matotoka
<? print(gmdate("Y")); ?> 

au lieu de 

<? print(date("Y")); ?>

travaillé pour moi (montre l'année en cours et pas plus montre le message d'erreur) . (Merci à Chris ci-dessus)

16
Susan Taunton

Si ce ne sont pas vos options

  • Modification de php.ini.
  • Ajout de l'appel date_default_timezone.

Au lieu de date, vous pouvez utiliser gmdate.

J'ai utilisé gmdate( "Y" ) quand j'avais besoin d'un an pour un fragment de copyright.

15
Chris

Si vous utilisez CodeIgniter et que vous ne pouvez pas changer le fichier php.ini, j'ai ajouté ce qui suit au début de index.php:

date_default_timezone_set('GMT');
14
Jose

Je garde toujours cette ligne à l'intérieur de la racine de codeigniter index.php.Pour que mon code fonctionne sur n'importe quel serveur

date_default_timezone_set('Asia/Dhaka');

Liste des fuseaux horaires pris en charge ici

11
Shaiful Islam

@ Justis m'a indiqué la bonne direction, mais son code n'a pas fonctionné pour moi. Cela a:

// set the default timezone if not set at php.ini
if (!date_default_timezone_get('date.timezone')) {
    // insert here the default timezone
    date_default_timezone_set('America/New_York');
}

Documentation: http://www.php.net/manual/en/function.date-default-timezone-get.php

Cette solution n'est pas seulement pour ceux qui ne disposent pas d'un accès complet au système. Il est nécessaire pour tout script lorsque vous le fournissez à quelqu'un d'autre que vous. Vous ne savez jamais sur quel serveur le script sera exécuté lorsque vous le distribuez à quelqu'un d'autre.

10
John Linhart

Je devais le mettre entre guillemets.

date_default_timezone_set("America/Los_Angeles"); // default time zone
4
nocturnalact

Cette question me dérange depuis un certain temps car j'essaye d'injecter un script "createbucket.php" dans composer et je continue à me dire que mon fuseau horaire est incorrect.

En fin de compte, la seule chose qui a résolu le problème a été de: $ Sudo nano /etc/php.ini

Rechercher fuseau horaire

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = UTC

Assurez-vous de supprimer le ;

Finalement 

$ Sudo service httpd restart

Et vous serez prêt à partir :)

4
T0mmyKn1fe

Vous pouvez définir le fuseau horaire dans votre fichier .htaccess

php_value date.timezone UTC
1
Alexander Lindquist
<? date_default_timezone_set('Europe/Istanbul'); ?>

Pour php (ou votre emplacement).

1

En plus de régler date.timezone = comme mentionné dans plusieurs réponses, J'ai trouvé une erreur dans le fichier php.ini qui l'empêchait d'accéder à date.timezone . lancer php à partir de la ligne de commande dans un terminal . une erreur a été signalée à la ligne 114. Dans mon cas, j'avais décommenté un paramètre permettant d'afficher les erreurs contenant '|' entre 2 valeurs. Ça ne lui a pas plu ... J'ai enlevé une des valeurs et le | et tout était bien après ça

1
M Graham

Une méthode simple pour deux fuseaux horaires. 

<?php 
$date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris')); 

date_default_timezone_set('America/New_York'); 

echo date("Y-m-d h:iA", $date->format('U')); 

// 2012-07-05 10:43AM 
?>
1
    date_default_timezone_set(date_default_timezone_get());

C'est une solution facile pour qui ne connaît pas le fuseau horaire.

0
Mohammed Alhanafi

J'ai eu cette erreur en cours d'exécution php-fpm dans une prison chroot. J'ai essayé de créer etc/php.ini et/usr/share/zoneinfo dans le répertoire chroot, mais cela ne fonctionnait tout simplement pas. J'ai même essayé de lire les démons php-fpm pour voir quel fichier ils manquaient - rien n'a sauté.

Donc, dans le cas où Google vous amène ici parce que vous obtenez cette erreur lorsque vous utilisez php-fpm configuré pour chroot, vous pouvez probablement le réparer en ajoutant cette ligne à /etc/php-fpm.d/www.conf dans la section ENV:

env[TZ] = America/New_York

Un redémarrage php-fpm est normalement requis pour que cela prenne effet. J'espère que cela aide quelqu'un là-bas.

0
Don Law

Si vous utilisez Plesk, essayez-le d'abord. Ouvrez les paramètres PHP, au bas de la page, modifiez date.timezone de DEFAULT à UTC. 

 enter image description here

 enter image description here

0
Latief Anwar

Cette réponse au-dessus de CtrlX est la réponse correcte, mais il se peut que cela ne fonctionne pas complètement . J'ai ajouté cette ligne à mon fichier php.ini:

date.timezone = "America/Los_Angeles"

mais il n'a pas supprimé l'erreur PHP pour tous mes fichiers car certains de mes scripts PHP se trouvent dans des sous-dossiers. J'ai donc dû éditer le fichier .htaccess pour configurer le fichier php.ini à utiliser de manière récursive (dans des sous-dossiers):

suphp_configpath /home/account_name/public_html

où nom_compte est le nom de votre compte cpanel et public_html le dossier dans lequel se trouve votre fichier php.ini.

0
Jeff Baker

Dans mon cas particulier, PHP est configuré pour utiliser PHP-FPM (FastCGI Process Manager). Lors de l'exécution de phpinfo() à partir de la CLI, j'ai constaté que le fuseau horaire correct était celui que j'avais défini dans le fichier php.ini. Toutefois, il était toujours incorrect dans le navigateur et faisait échouer mon code. J'avais simplement besoin de redémarrer le service php-fpm sur le serveur.

service rh-php56-php-fpm restart

Vous devrez peut-être également redémarrer le service httpd si vous avez modifié le php.ini

service httpd restart
0
EternalHour

Une solution rapide, tout en corrigeant les incompatibilités, consiste à désactiver le signalement des erreurs dans votre fichier index.php:

Insérez la ligne ci-dessous dans votre index.php ci-dessous define( ‘_JEXEC’, 1 );

error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR |
E_COMPILE_WARNING );
0
Elise Oertli

J'accueille mes seaux EC2 et S3 dans la région us-west-2 (Oregon). Quand j’appelais $s3client->listBuckets() pour lister les compartiments existants dans mon php, j’obtenais une exception - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...". J’ai apporté les modifications ci-dessous pour que cela fonctionne. Partager ces détails au cas où quelqu'un serait confronté à un problème similaire et si aucune des réponses ci-dessus n'avait aidé.

  1. Sur la base de la documentation @ AWS Configuration du protocole NTP (Network Time Protocol) , j'ai confirmé que l'état du service ntpd était correct en exécutant la commande ntpstat. Si vous obtenez une erreur, ce lien vous aide à savoir ce qui ne va pas.
  2. Ouvrez le fichier /etc/php.ini (certains l’auront peut-être dans un chemin différent selon la version de php installée) et constaterez que date.timezone n’a été défini sur aucune valeur et qu’il a été commenté par défaut. Je commente en supprimant ';' avant cette ligne et définissez sa valeur sur "UTC" et enregistrez le fichier.
  3. Démarrés les démons http et ntp à l'aide des commandes Sudo service httpd restart et Sudo service ntpd restart.

Après cela, je peux lister les compartiments avec succès sans aucune exception. J'espère que cela t'aides.

0
Maruti C

Si vous n'avez pas accès au fichier php.ini, créez ou modifiez un fichier .htaccess à la racine de votre domaine ou de votre sous-site et ajoutez-le (généré par cpanel):

<IfModule mime_module>
AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

<IfModule php5_module>
php_value date.timezone "America/New_York"
</IfModule>

<IfModule lsapi_module>
php_value date.timezone "America/New_York"
</IfModule>
0
user3724176

Pour les utilisateurs de docker: Créez un fichier timezone.ini local dans votre projet, configurez la configuration dans docker-compose.yml, 

    volumes:
        - "./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"

timezone.ini

    date.timezone=Australia/Sydney
0
Jin