Wystąpił ten błąd, gdy poprosiłem o aktualizację wersji PHP z 5.2.17 do PHP 5.3.21 na serwerze.
<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>
php.ini
używane przez apache, po prostu wykonaj następujące poleceniephp -i | grep php.ini
.Jeśli nie możesz zmodyfikować konfiguracji php.ini, możesz również użyć następującego fragmentu kodu na początku kodu:
Lista stref czasowych znajduje się na stronie http://www.php.net/manual/en/timezones.php .
źródło
Dodaj następujące elementy do swojego
index.php
pliku. Po raz pierwszy zetknąłem się z tym, kiedy przeniosłem moją aplikację z mojego serwera XAMPP na Apache 2.2 i PHP 5.4 ...Radzę ci to zrobić w swoim
index.php
pliku zamiast wphp.ini
pliku.źródło
zamiast
pracował dla mnie (pokazuje bieżący rok i nie wyświetla już komunikatu o błędzie). (Dzięki Chrisowi powyżej)
źródło
Jeśli to nie są twoje opcje
php.ini
.date_default_timezone
połączenia.Zamiast
date
ciebie możesz użyćgmdate
.Użyłem go,
gmdate( "Y" )
gdy potrzebowałem roku na fragment kodu z prawami autorskimi.źródło
Jeśli używasz CodeIgniter i nie możesz zmienić php.ini, dodałem następujące na początku index.php:
źródło
Zawsze trzymam ten wiersz w katalogu głównym programisty
index.php
. Aby mój kod działał na dowolnym serwerzeLista obsługiwanych stref czasowych tutaj
źródło
@Justis wskazał mi właściwy kierunek, ale jego kod nie działał dla mnie. To spowodowało:
Dokumentacja: http://www.php.net/manual/en/function.date-default-timezone-get.php
To rozwiązanie jest nie tylko dla tych, którzy nie mają pełnego dostępu do systemu. Jest niezbędny dla każdego skryptu, jeśli udostępniasz go komukolwiek innemu oprócz ciebie. Nigdy nie wiadomo, na jakim serwerze skrypt będzie działał, gdy przekażesz go komuś innemu.
źródło
Ten problem od pewnego czasu mnie denerwuje, gdy próbuję wstrzyknąć kompozytorowi skrypt „createbucket.php” i ciągle słyszę, że moja strefa czasowa jest niepoprawna.
Ostatecznie jedyną rzeczą, która rozwiązała ten problem, było:
$ sudo nano /etc/php.ini
Wyszukaj strefę czasową
Upewnij się, że usunąłeś
;
W końcu
I będziesz dobrze iść :)
źródło
Musiałem umieścić to w podwójnych cudzysłowach.
źródło
/etc/php.ini: date.timezone = America/Los_Angeles
Możesz ustawić strefę czasową w swoim
.htaccess
plikuźródło
Oprócz ustawienia date.timezone = jak wspomniano w kilku odpowiedziach, znalazłem błąd w pliku php.ini, który uniemożliwiał mu przejście do date.timezone. Znalazłem to, uruchamiając php z wiersza poleceń w terminalu. spowodowało to zgłoszenie błędu w wierszu 114. W moim przypadku odkomentowałem ustawienie wyświetlania błędów, które miały „|” między 2 wartościami. Nie podobało mi się to. Usunąłem jedną z wartości i | i potem wszystko było dobrze
źródło
Prosta metoda dla dwóch stref czasowych.
źródło
Dla php (lub twojej lokalizacji).
źródło
Szybkim rozwiązaniem podczas usuwania niezgodności jest wyłączenie raportowania błędów w
index.php
pliku:Wstaw poniższy wiersz do swojego index.php poniżej
define( ‘_JEXEC’, 1 );
źródło
Hostuję mój segment EC2 i S3 w regionie us-west-2 (Oregon). Kiedy dzwoniłem
$s3client->listBuckets()
do listy istniejących wiader w php, otrzymywałem wyjątek -"Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...".
wprowadziłem poniższe zmiany, aby to działało. Udostępnianie tych danych na wypadek, gdyby ktoś napotkał podobny problem i żadna z powyższych odpowiedzi nie pomogła.ntpstat
polecenie. Jeśli wystąpi błąd, ten link pomoże Ci dowiedzieć się, co się dzieje.date.timezone
nie ustawiono żadnej wartości, a także został domyślnie skomentowany. Nie skomentowałem, usuwając ';' przed tym wierszem i ustaw jego wartość na"UTC"
i zapisz plik.sudo service httpd restart
isudo service ntpd restart
.Po tym jestem w stanie wyświetlić listę wiader bez żadnych wyjątków. Mam nadzieję że to pomoże.
źródło
Jeśli używasz Plesk, spróbuj, Najpierw otwórz Ustawienia PHP, na dole strony zmień date.timezone z DEFAULT na UTC.
źródło
Miałem ten błąd podczas uruchamiania php-fpm w więzieniu chroot. Próbowałem utworzyć etc / php.ini i / usr / share / zoneinfo w katalogu chroot, ale to po prostu nie działało. Próbowałem nawet śledzić demony php-fpm, aby zobaczyć, jakiego pliku brakuje - nic nie wyskoczyło.
Jeśli więc Google cię tu sprowadza, ponieważ pojawia się ten błąd, gdy używasz php-fpm skonfigurowanego dla chroot, prawdopodobnie możesz to naprawić, dodając ten wiersz do
/etc/php-fpm.d/www.conf
sekcji ENV:Ponowne uruchomienie php-fpm jest zwykle wymagane, aby zadziałało. Mam nadzieję, że to pomoże komuś tam.
źródło
W moim konkretnym przypadku mam skonfigurowane PHP do korzystania z PHP-FPM (FastCGI Process Manager). Podczas uruchamiania
phpinfo()
z CLI widziałem poprawną strefę czasową, którą ustawiłem w php.ini, jednak nadal była niepoprawna w przeglądarce i powodowała awarię mojego kodu. Po prostu potrzebowałem zrestartowaćphp-fpm
usługę na serwerze.Może być również konieczne ponowne uruchomienie
httpd
usługi, jeśli edytowałeśphp.ini
źródło
Powyższa odpowiedź z CtrlX jest poprawną odpowiedzią, ale może nie działać całkowicie. Dodałem tę linię do mojego pliku php.ini :
ale nie usunęło błędu PHP dla wszystkich moich plików, ponieważ niektóre z moich skryptów PHP znajdują się w podfolderach. Musiałem więc edytować plik .htaccess , aby skonfigurować php.ini, aby był używany rekurencyjnie (w podfolderach):
gdzie nazwa_konta to nazwa konta cpanel, a public_html to folder, w którym znajduje się plik php.ini.
źródło
Dla użytkownika dockera: Utwórz lokalny plik timezone.ini w swoim projekcie, skonfiguruj config w docker-compose.yml,
timezone.ini
źródło
Jeśli nie masz dostępu do pliku
php.ini
, utwórz lub edytuj.htaccess
plik w katalogu głównym domeny lub sub i dodaj go (wygenerowany przez cpanel):źródło
Istnieją dwie opcje rozwiązania tego
Najpierw przejdź do pliku php.ini i ustaw domyślną strefę czasową
Po ustawieniu strefy czasowej w php.ini zrestartuj serwer
Po drugie, zmień strefę czasową przypisania czasu wykonywania w zależności od potrzeb
źródło
Na stronie połączenia umieść taki kod
date_default_timezone_set("Africa/Johannesburg");
na podstawie bieżącej lokalizacji.źródło