Ich habe ein Symfony2-Projekt. Ich habe mein PHP heute auf 5.5.7 aktualisiert und seitdem bekomme ich das
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...
Ich habe die Standardzeitzone in meiner php.ini eingerichtet
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris";
Um sicherzugehen, dass dies die gute php.ini ist, habe ich nachgefragt
phpinfo();
Und der Weg, den ich dorthin gehe, ist der, den ich ändere:
/usr/local/php5.5.7/lib
Aber da drin sehe ich das
Default timezone UTC
Welches ist seltsam.
irgendeine Idee? Vielen Dank.
Antworten:
Vielleicht versuchen Sie es in Apache einzustellen
php.ini
, aber Ihre CLI (Command Line Interface)php.ini
ist nicht gut.Suchen Sie Ihre
php.ini
Datei mit dem folgenden Befehl:Und dann suchen
date.timezone
und einstellen auf"Europe/Amsterdam"
. Alle gültigen Zeitzonen finden Sie hier http://php.net/manual/en/timezones.phpAuf andere Weise (falls die andere nicht funktioniert) suchen Sie nach der Datei
AppKernel.php
, die sich im Ordnerapp
Ihres Symfony- Projektverzeichnisses befinden sollte. Überschreiben Sie die folgende__construct
Funktion in der KlasseAppKernel
:<?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); } }
quelle
Es wurde ein ähnlicher Weg gefunden, um dieses Problem zu beheben (zumindest für mich).
Überprüfen Sie zuerst, wo sich das
CLI php.ini
befindet:php -i | grep "php.ini"
In meinem Fall endete ich mit: Konfigurationsdatei (php.ini) Pfad => / etc.
Dann den
cd ..
ganzen Weg zurück undcd
hinein/etc
, machls
in meinem Fall, dass php.ini nicht angezeigt wurde, nur eine php.ini.defaultKopieren Sie nun die Datei php.ini.default mit dem Namen php.ini:
sudo cp php.ini.default php.ini
Ändern Sie zum Bearbeiten die Berechtigungen der Datei:
sudo chmod ug+w php.ini
sudo chgrp staff php.ini
Öffnen Sie das Verzeichnis und bearbeiten Sie die Datei php.ini:
open .
Tipp: Wenn Sie die php.ini aufgrund eines Berechtigungsproblems nicht bearbeiten können, kopieren Sie 'php.ini.default', fügen Sie sie in Ihren Desktop ein und benennen Sie sie in 'php.ini' um. Öffnen Sie sie dann und bearbeiten Sie sie im folgenden Schritt 7. Verschieben Sie es dann (kopieren + einfügen) in den Ordner / etc. Problem wird behoben.
Suchen Sie nach [Datum] und stellen Sie sicher, dass die folgende Zeile das richtige Format hat:
date.timezone = "Europe/Amsterdam"
Ich hoffe das könnte dir helfen.
quelle
Die aktuell akzeptierte Antwort von crack ist in Symfony 2.3 veraltet und wird um 3.0 entfernt. Es sollte in den Konstruktor verschoben werden:
public function __construct($environment, $debug) { date_default_timezone_set('Europe/Warsaw'); parent::__construct($environment, $debug); }
quelle
Seit PHP 5.5 gibt es eine separate php.ini-Datei für die CLI-Schnittstelle. Wenn Sie die Symfony-Konsole über die Befehlszeile verwenden, wird diese spezielle php.ini verwendet.
In Ubuntu 13.10 Datei überprüfen:
quelle
Das Problem tritt auf, wenn wir PHP 5.1 unter Redhat oder Cent OS verwenden
PHP 5.1 unter RHEL / CentOS unterstützt die Zeitzonenfunktionen nicht
quelle
Nach der Antwort von sas , PHP 5.4, Symfony 2.8, musste ich verwenden
ini_set('date.timezone','<whatever timezone string>');
statt
date_default_timezone_set
. Ich habe auch einen Aufruf anini_set
die Spitze eines Brauchs hinzugefügtweb/config.php
, damit diese Prüfung erfolgreich ist.quelle
Fügen Sie diesen Code Ihrer AppKernel-Klasse hinzu:
public function init() { date_default_timezone_set('Asia/Tehran'); parent::init(); }
quelle
init
ist seit Version 2.3 veraltet und wird in 3.0 entfernt. Verschieben Sie Ihre Logik stattdessen im Konstruktor wie @Krzysztof Bociurko oder die aktualisierte akzeptierte Antwort.