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>
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 .
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 .
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');
}
<? 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)
Si ce ne sont pas vos options
php.ini
.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.
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');
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');
@ 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.
Je devais le mettre entre guillemets.
date_default_timezone_set("America/Los_Angeles"); // default time zone
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 :)
Vous pouvez définir le fuseau horaire dans votre fichier .htaccess
php_value date.timezone UTC
<? date_default_timezone_set('Europe/Istanbul'); ?>
Pour php (ou votre emplacement).
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
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
?>
date_default_timezone_set(date_default_timezone_get());
C'est une solution facile pour qui ne connaît pas le fuseau horaire.
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.
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.
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
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 );
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é.
ntpstat
. Si vous obtenez une erreur, ce lien vous aide à savoir ce qui ne va pas.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.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.
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>
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