it-swarm.com.de

"date (): Es ist nicht sicher, sich auf die Zeitzoneneinstellungen des Systems zu verlassen ..."

Ich habe diesen Fehler erhalten, als ich die Aktualisierung der PHP -Version von 5.2.17 auf PHP 5.3.21 auf dem Server anforderte.

<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

Sie müssen wahrscheinlich die Zeitzone in eine Konfigurationszeile in Ihrer php.ini-Datei einfügen. Sie sollten einen solchen Block in Ihrer php.ini-Datei haben:

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

Wenn nicht, fügen Sie es hinzu (ersetzen Sie die Zeitzone durch Ihre). Stellen Sie nach der Konfiguration sicher, dass Sie httpd (service httpd restart) neu starten.

Hier ist die Liste der unterstützten Zeitzonen .

534
CtrlX

Wenn Sie Ihre php.ini-Konfiguration nicht ändern können, können Sie auch das folgende Snippet am Anfang Ihres Codes verwenden:

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

Die Liste der Zeitzonen finden Sie unter http://www.php.net/manual/de/timezones.php .

189

Fügen Sie Folgendes in Ihre index.php-Datei ein. Dies ist mir zum ersten Mal aufgefallen, als ich meine Anwendung von meinem XAMPP server nach Apache 2.2 und PHP 5.4 verschoben habe.

Ich würde empfehlen, dass Sie dies in Ihrer index.php-Datei anstelle der php.ini-Datei tun.

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

anstatt 

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

arbeitete für mich (zeigt aktuelles Jahr und keine Fehlermeldung mehr an) .

16
Susan Taunton

Wenn dies nicht Ihre Optionen sind

  • php.ini ändern.
  • date_default_timezone-Aufruf hinzufügen.

Anstelle von date können Sie gmdate verwenden.

Ich habe gmdate( "Y" ) verwendet, als ich ein Jahr für ein Copyright-Snipplet brauchte.

15
Chris

Wenn Sie CodeIgniter verwenden und php.ini nicht ändern können, habe ich Folgendes am Anfang von index.php hinzugefügt:

date_default_timezone_set('GMT');
14
Jose

Ich halte diese Zeile immer im Codeigniter-Stammverzeichnis index.php.So, damit mein Code auf jedem Server funktioniert

date_default_timezone_set('Asia/Dhaka');

Liste der unterstützten Zeitzonen hier

11
Shaiful Islam

@Justis wies mich in die richtige Richtung, aber sein Code funktionierte nicht für mich. Dies tat:

// 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');
}

Dokumentation: http://www.php.net/manual/de/function.date-default-timezone-get.php

Diese Lösung ist nicht nur für diejenigen gedacht, die keinen vollständigen Systemzugriff haben. Es ist für jedes Skript erforderlich, wenn Sie es anderen Personen als Ihnen zur Verfügung stellen. Sie wissen nie, auf welchem ​​Server das Skript ausgeführt wird, wenn Sie es an Dritte weitergeben.

10
John Linhart

Ich musste es in Anführungszeichen setzen.

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

Dieses Problem hat mich einige Zeit lang geärgert, als ich versuche, ein "createbucket.php" -Skript in den Composer zu injizieren, und mir wird immer wieder gesagt, dass meine Zeitzone falsch ist.

Am Ende konnte das Problem nur behoben werden: $ Sudo nano /etc/php.ini

Suche nach timezone

[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

Stellen Sie sicher, dass Sie den ; entfernen.

Dann endlich 

$ Sudo service httpd restart

Und du wirst gut sein :)

4
T0mmyKn1fe

Sie können die Zeitzone in Ihrer .htaccess-Datei einstellen

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

Für PHP (oder Ihren Standort).

Neben der Einstellung von date.timezone =, wie in mehreren Antworten erwähnt, fand ich in der Datei php.ini einen Fehler, durch den verhindert wurde, dass date.timezone ..__ php von der Kommandozeile aus in einem Terminal ausführen . In Zeile 114 wurde ein Fehler gemeldet. In meinem Fall hatte ich eine Einstellung für die Anzeige von Fehlern mit '|' auskommentiert. zwischen 2 Werten. Es hat mir nicht gefallen ... Ich habe einen der Werte und das | entfernt und danach war alles gut

1
M Graham

Eine einfache Methode für zwei Zeitzonen. 

<?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());

Dies ist eine einfache Lösung, für die die Zeitzone nicht bekannt ist.

0

Ich hatte diesen Fehler beim Ausführen von PHP-Fpm in einem Chroot-Gefängnis. Ich habe versucht, im chroot-Verzeichnis etc/php.ini und/usr/share/zoneinfo zu erstellen, aber es hat einfach nicht funktioniert. Ich habe sogar versucht, die php-fpm-Daemons zu ermitteln, um zu sehen, welche Datei sie vermisst haben - nichts ist gesprungen.

Falls Sie von Google hierher gebracht werden, weil Sie diesen Fehler erhalten, wenn Sie php-fpm für chroot verwenden, können Sie das Problem möglicherweise beheben, indem Sie diese Zeile zu /etc/php-fpm.d/www.conf im Abschnitt ENV hinzufügen:

env[TZ] = America/New_York

Ein php-fpm-Neustart ist normalerweise erforderlich, um wirksam zu werden. Hoffe, das hilft jemandem da draußen.

0
Don Law

Wenn Sie Plesk verwenden, probieren Sie es aus. Zuerst öffnen Sie PHP Einstellungen. Ändern Sie am unteren Rand der Seite date.timezone von DEFAULT in UTC. 

 enter image description here

 enter image description here

0
Latief Anwar

Diese Antwort oberhalb von CtrlX ist die richtige Antwort, funktioniert jedoch möglicherweise nicht vollständig ..__ Ich habe diese Zeile in meine Datei php.ini eingefügt:

date.timezone = "America/Los_Angeles"

der Fehler PHP wurde jedoch nicht für alle meine Dateien entfernt, da sich einige meiner PHP -Skripts in Unterordnern befinden. Also musste ich die .htaccess Datei bearbeiten, um die php.ini rekursiv zu verwenden (in Unterordnern):

suphp_configpath /home/account_name/public_html

dabei ist Kontoname der Name Ihres Cpanel-Kontos und public_html der Ordner, in dem sich Ihre php.ini-Datei befindet.

0
Jeff Baker

In meinem speziellen Fall habe ich PHP für die Verwendung von PHP-FPM (FastCGI Process Manager) konfiguriert. Als ich phpinfo() von CLI aus ausführte, sah ich die korrekte Zeitzone, die ich in der php.ini eingestellt hatte. Allerdings war sie immer noch im Browser fehlerhaft und führte dazu, dass mein Code fehlschlug. Ich musste einfach den php-fpm-Dienst auf dem Server neu starten.

service rh-php56-php-fpm restart

Sie müssen möglicherweise auch den httpd-Dienst neu starten, wenn Sie den php.ini bearbeitet haben.

service httpd restart
0
EternalHour

Eine schnelle Lösung, während Sie die Inkompatibilitäten korrigieren, besteht darin, die Fehlerberichterstattung in Ihrer index.php-Datei zu deaktivieren:

Fügen Sie die folgende Zeile in Ihre index.php unterhalb von define( ‘_JEXEC’, 1 ); ein.

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

Ich hoste meinen EC2- und S3-Bucket in der Region us-west-2 (Oregon). Als ich $s3client->listBuckets() anrief, um vorhandene Buckets in meinem PHP aufzulisten, bekam ich eine Ausnahme - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...". Ich habe die folgenden Änderungen vorgenommen, damit es funktioniert. Teilen Sie diese Details, falls jemand mit einem ähnlichen Problem konfrontiert ist und die oben genannten Antworten nicht geholfen haben.

  1. Basierend auf der Dokumentation @ AWS Konfigurieren des Network Time Protocol (NTP) bestätigte ich, dass der Status des ntpd-Dienstes durch Ausführen des Befehls ntpstat in Ordnung ist. Wenn Sie einen Fehler erhalten, hilft Ihnen dieser Link, zu wissen, was falsch läuft.
  2. Die Datei /etc/php.ini wurde geöffnet (in einigen Fällen ist sie in einem anderen Pfad auf der Grundlage der installierten Version von php installiert) und stellte fest, dass date.timezone auf keinen Wert festgelegt und standardmäßig kommentiert wurde. Ich kommentierte das Entfernen von ';' Setzen Sie vor dieser Zeile den Wert auf "UTC" und speichern Sie die Datei.
  3. Http und ntp-Daemons wurden mit den Befehlen Sudo service httpd restart und Sudo service ntpd restart neu gestartet.

Danach kann ich ausnahmslos Buckets erfolgreich auflisten. Hoffe das hilft.

0
Maruti C

Wenn Sie keinen Zugriff auf die Datei php.ini haben, erstellen oder bearbeiten Sie eine .htaccess -Datei im Stammverzeichnis Ihrer Domain oder Ihres Subs und fügen Sie diese hinzu (generiert von 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

Für Docker-Benutzer: Erstellen Sie eine lokale timezone.ini-Datei in Ihrem Projekt. 

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

timezone.ini

    date.timezone=Australia/Sydney
0
Jin