web-dev-qa-db-fra.com

Avertissement: date_default_timezone_get () en installant Symfony

J'essaie d'installer Symfony sur XAMPP et j'obtiens de nombreuses erreurs. 

[Symfony\Component\Debug\Exception\ContextErrorException]                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
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 
/Applications/XAMPP/xamppfiles/htdocs/vendor/monolog/monolog/src/Monolog/Logger.php line 233 

et alors

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-
install-cmd event terminated with an exception

et enfin 

[RuntimeException]                                                         
An error occurred when executing the "'cache:clear --no-warmup'" command.

J'ai essayé de changer le fichier date.timezone dans mon fichier php.ini et d'utiliser la fonction date_default_timezone_set () dans la ligne de commande avant d'essayer de l'installer et rien ne semble fonctionner. 

Je la regarde depuis un moment alors toute aide est appréciée 

14
dabecks

Si vous ne pouvez pas le définir correctement dans votre php.ini pour une raison quelconque, vous pouvez le définir comme la première chose dans votre AppKernel, comme suit.

class AppKernel extends Kernel
{
    public function __construct($environment, $debug)
    {
        date_default_timezone_set('Europe/London');
        parent::__construct($environment, $debug);
    }

    public function registerBundles()
    {
        $bundles = array(
            ....
        );
    }

    ....
}
29
qooplmao

Nous avons trouvé un moyen similaire de résoudre ce problème alors que d'autres ne le faisaient pas.

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

    php -i | grep "php.ini"

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

  3. Alors cd .. tout le chemin et cd dans /etc, ne ls dans mon cas, php.ini ne s'est pas affiché, 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 .

    Conseil: Si vous ne parvenez pas à modifier le fichier php.ini en raison d'un problème d'autorisations, copiez-le 'php.ini.default' et collez-le sur votre bureau, renommez-le en 'php.ini', ouvrez-le et modifiez-le. Etape suivante 7. Ensuite, déplacez-le (copier-coller) 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"

22
Pknife

Il est très courant que WAMP/XAMPP et les autres piles utilisent plusieurs fichiers php.ini - un pour cli et un pour le Web.

Comme vous expiriez l’erreur de la CLI, essayez ce qui suit:

php -i | grep "php.ini"

cela générera l'emplacement de php.ini utilisé pour cli. Editez le date.timezone ici.

Comme pour le mode Web, créez un fichier foo.php dans votre répertoire "web" de symfony contenant uniquement " 

<?php phpinfo(); ?>

Et, encore une fois, recherchez l’emplacement de php.ini utilisé et modifiez le date.timezone.

3
Jovan Perovic

Modifiez votre php.ini (pas nécessairement à /etc/php.ini - utilisez php -i | grep ini pour trouver votre version) et ajoutez votre fuseau horaire.

Par exemple. pour l'Amérique/New York, ce serait:

date.timezone = "America/New_York"

Voir http://php.net/manual/en/timezones.america.php

3
Snowcrash

Cela a été mentionné mais c'est aussi simple que:

Sudo cp /etc/php.ini.default /etc/php.ini

Vous ne pouvez pas définir le fuseau horaire s'il ne trouve pas le fichier php.ini !!!!

0
StormLover