web-dev-qa-db-fra.com

Symfony2 et date_default_timezone_get () - Il n’est pas prudent de s’appuyer sur les paramètres de fuseau horaire du système

J'ai un projet Symfony2. J'ai mis à jour mon php à 5.5.7 aujourd'hui et depuis lors, je reçois le

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 the timezone 'UTC' for now, but please set date.timezone to select your timezone. in...

J'installe le fuseau horaire par défaut dans mon php.ini

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris";

Pour être sûr que c'est le bon php.ini, je vérifiais avec

phpinfo();

Et le chemin que je vais y arriver est celui que je modifie:

 /usr/local/php5.5.7/lib 

Mais là-bas, je vois le

Default timezone    UTC 

Ce qui est étrange.

une idée? Je vous remercie.

77
Miloš

Vous essayez peut-être de le définir dans le php.ini d'Apache, mais votre CLI (interface de ligne de commande) php.ini n'est pas bon.

Recherchez votre fichier php.ini à l'aide de la commande suivante:

php -i | grep php.ini

Puis recherchez date.timezone et réglez-le sur "Europe/Amsterdam". tous les fuseaux horaires valides seront trouvés ici http://php.net/manual/en/timezones.php

Une autre façon (si l’autre ne marche pas), cherchez le fichier AppKernel.php, qui devrait se trouver dans le dossier app de votre Symfony répertoire du projet. Remplacez la fonction __construct ci-dessous dans la classe AppKernel:

<?php     

class AppKernel extends Kernel
{
    // Other methods and variables


    // Append this init function below

    public function __construct($environment, $debug)
    {
        date_default_timezone_set( 'Europe/Paris' );
        parent::__construct($environment, $debug);
    }

}
147
sas

J'ai trouvé un moyen similaire de résoudre ce problème (du moins c'est ce qui s'est passé pour moi).

  1. Commencez par vérifier où se trouve le CLI php.ini:

    php -i | grep "php.ini"

  2. Dans mon cas, je me suis retrouvé avec: Fichier de configuration (php.ini) Chemin =>/etc

  3. Ensuite, cd .. tout le chemin du retour et cd dans /etc, faites ls dans mon cas, php.ini ne s'est pas présenté, mais seulement un php.ini.default

  4. Maintenant, copiez le fichier php.ini.default nommé php.ini:

    Sudo cp php.ini.default php.ini

  5. Pour éditer, changez les permissions du fichier:

    Sudo chmod ug+w php.ini

    Sudo chgrp staff php.ini

  6. Ouvrez le répertoire et éditez le fichier php.ini:

    open .

    Astuce: si vous ne pouvez pas éditer le fichier php.ini à cause d'un problème d'autorisations, copiez 'php.ini.default' et collez-le sur votre bureau. Renommez-le en "php.ini" puis ouvrez-le et éditez-le après l'étape 7. Puis déplacez-le (copiez-le/collez) dans le dossier/etc. Le problème sera résolu.

  7. Recherchez [Date] et assurez-vous que la ligne suivante est dans le bon format:

    date.timezone = "Europe/Amsterdam"

J'espère que cela pourrait vous aider.

66
Pknife

La réponse par crack actuellement acceptée est obsolète dans Symfony 2.3 et sera supprimée par la version 3.0. Il devrait être déplacé vers le constructeur:

public function __construct($environment, $debug) {
    date_default_timezone_set('Europe/Warsaw');
    parent::__construct($environment, $debug);
}
25
Krzysztof Bociurko

Depuis PHP 5.5, il existe un fichier php.ini distinct pour l'interface CLI. Si vous utilisez la console de symfony à partir de la ligne de commande, ce fichier php.ini spécifique est utilisé.

Dans Ubuntu 13.10, vérifiez le fichier:

/etc/php5/cli/php.ini

2
Valentas

Suivi de réponse de sas , PHP 5.4, Symfony 2.8, je devais utiliser

ini_set('date.timezone','<whatever timezone string>');

au lieu de date_default_timezone_set. J'ai également ajouté un appel à ini_set en haut d'un web/config.php personnalisé pour que cette vérification aboutisse.

1
cxw

Le problème apparaît lorsque nous utilisons PHP 5.1 sur Redhat ou Centos

PHP 5.1 sur RHEL/CentOS ne prend pas en charge les fonctions de fuseau horaire

1
bilelovitch