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>
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 .
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 .
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');
}
<? print(gmdate("Y")); ?>
anstatt
<? print(date("Y")); ?>
arbeitete für mich (zeigt aktuelles Jahr und keine Fehlermeldung mehr an) .
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.
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');
Ich halte diese Zeile immer im Codeigniter-Stammverzeichnis index.php
.So, damit mein Code auf jedem Server funktioniert
date_default_timezone_set('Asia/Dhaka');
@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.
Ich musste es in Anführungszeichen setzen.
date_default_timezone_set("America/Los_Angeles"); // default time zone
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 :)
Sie können die Zeitzone in Ihrer .htaccess
-Datei einstellen
php_value date.timezone UTC
<? 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
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.
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.
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.
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
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 );
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.
ntpstat
in Ordnung ist. Wenn Sie einen Fehler erhalten, hilft Ihnen dieser Link, zu wissen, was falsch läuft.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.Sudo service httpd restart
und Sudo service ntpd restart
neu gestartet.Danach kann ich ausnahmslos Buckets erfolgreich auflisten. Hoffe das hilft.
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>
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