"Date (): нецелесообразно полагаться на настройки часового пояса системы …"

Я получил эту ошибку, когда попросил обновить версию PHP с 5.2.17 до PHP 5.3.21 на сервере.

<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 . У вас должен быть такой блок в файле php.ini:

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

Если нет, добавьте его (заменив часовой пояс на ваш). После настройки обязательно перезапустите httpd ( service httpd restart ).

Вот список поддерживаемых часовых поясов .

Если вы не можете изменить конфигурацию php.ini, вы можете использовать следующий фрагмент кода в начале вашего кода:

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

Список часовых поясов можно найти по адресу http://www.php.net/manual/en/timezones.php .

Добавьте в файл index.php . Я впервые столкнулся с этим, когда переместил приложение с моего сервера XAMPP на Apache 2.2 и PHP 5.4 …

Я бы посоветовал вам сделать это в файле index.php вместо файла php.ini .

 if( ! ini_get('date.timezone') ) { date_default_timezone_set('GMT'); } 

Если это не ваши варианты

  • Изменение php.ini .
  • Добавление вызова date_default_timezone .

Вместо date вы можете использовать gmdate .

Я использовал gmdate( "Y" ) когда мне понадобился год для авторского snipplet.

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

вместо

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

работал на меня (показывает текущий год и больше не показывает сообщение об ошибке). (Спасибо Крису выше)

Я всегда держу эту строку внутри корневого индекса codeigniter index.php что мой код работает на любом сервере

 date_default_timezone_set('Asia/Dhaka'); 

Список поддерживаемых часовых поясов здесь

@Justis указал мне в правильном направлении, но его код не работал для меня. Это произошло:

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

Документация: http://www.php.net/manual/en/function.date-default-timezone-get.php

Это решение предназначено не только для тех, кто не имеет полного доступа к системе. Это необходимо для любого скрипта, когда вы предоставляете его кому-либо, кроме вас. Вы никогда не знаете, на каком сервере будет запускаться скрипт, когда вы распространяете его кому-то другому.

Если вы используете CodeIgniter и не можете изменить php.ini, я добавил в начало index.php следующее:

 date_default_timezone_set('GMT'); 

Эта проблема подтачивала меня в течение некоторого времени, когда я пыталась внедрить сценарий «createbucket.php» в композитор, и мне постоянно говорят, что моя часовая зона неверна.

В итоге единственное, что исправляло проблему, было: $ sudo nano /etc/php.ini

Поиск часового пояса

 [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 

Убедитесь, что вы удалите ;

Затем, наконец,

 $ sudo service httpd restart 

И тебе будет хорошо идти 🙂

Мне пришлось включить его в двойные кавычки.

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

В дополнение к настройке date.timezone = как упоминалось в нескольких ответах, я обнаружил ошибку в файле php.ini, которая не позволяла ему добраться до date.timezone. То, как я нашел это, – это запустить php из командной строки в терминале. это привело к тому, что сообщение об ошибке было сообщено на линии 114. В моем случае я раскомментировал параметр для отображения ошибок, которые имели '|' между 2 значениями. Ему это не понравилось. Я удалил одно из значений и | и после этого все было хорошо

Простой метод для двух часовых поясов.

 <?php $date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris')); date_default_timezone_set('America/New_York'); echo date("Ymd h:iA", $date->format('U')); // 2012-07-05 10:43AM ?> 

Быстрое решение, в то время как вы исправляете несовместимости, заключается в отключении отчетов об ошибках в вашем файле index.php :

Вставьте строку ниже в свой define( '_JEXEC', 1 ); index.php ниже define( '_JEXEC', 1 );

 error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING ); 

Я размещаю свои ведра EC2 и S3 в регионе us-west-2 (Oregon). Когда я вызывал $s3client->listBuckets() чтобы перечислить существующие ковши в моем php, я получал исключение – "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...". Я сделал следующие изменения, чтобы заставить его работать. Разделяйте эти данные, если кто-то сталкивается с подобной проблемой, и ни один из вышеперечисленных ответов не помог.

  1. Основываясь на документации @ AWS Настройка протокола сетевого времени (NTP) , я подтвердил, что статус службы ntpd прекрасен, запустив команду ntpstat . Если вы получите ошибку, эта ссылка поможет вам узнать, что происходит не так.
  2. Открыт файл /etc/php.ini (некоторые могут иметь его в другом пути на основе установленной версии php) и обнаружили, что date.timezone не была установлена ​​ни в какое значение, а также она была прокомментирована по умолчанию. Я не комментировал, удалив ';' перед этой строкой и установите ее значение в "UTC" и сохраните файл.
  3. Перезагруженные демоны http и ntp с использованием sudo service httpd restart и sudo service ntpd restart .

После этого я могу успешно перечислить ведра без каких-либо исключений. Надеюсь это поможет.

Если вы используете Plesk, попробуйте, сначала, откройте PHP Settings, внизу страницы, измените date.timezone с DEFAULT на UTC.

введите описание изображения здесь

введите описание изображения здесь

У меня была ошибка с php-fpm в chroot-тюрьме. Я попытался создать etc / php.ini и / usr / share / zoneinfo в каталоге chroot, но это просто не сработало. Я даже пробовал использовать демоны php-fpm, чтобы увидеть, какой файл они пропали без вести – ничего не вышло.

Поэтому в случае, если Google приведет вас сюда, потому что вы получаете эту ошибку при использовании php-fpm, настроенной для chroot, вы можете исправить ее, добавив эту строку в /etc/php-fpm.d/www.conf в разделе ENV:

 env[TZ] = America/New_York 

Обычно для этого требуется перезапуск php-fpm. Надеюсь, это поможет кому-то там.

В моем конкретном случае у меня есть PHP, настроенный на использование PHP-FPM (FastCGI Process Manager). При выполнении phpinfo() из CLI я видел правильный часовой пояс, который я установил в php.ini, однако он все еще был некорректным в браузере и вызывал сбой моего кода. Мне просто нужно было перезапустить службу php-fpm на сервере.

 service rh-php56-php-fpm restart 

Вам также может потребоваться перезапустить службу httpd если вы отредактировали php.ini

 service httpd restart 

Этот ответ выше из CtrlX – правильный ответ, но он может работать не полностью. Я добавил эту строку в файл php.ini :

 date.timezone = "America/Los_Angeles" 

но он не удалял ошибку PHP для всех моих файлов, потому что некоторые из моих PHP-скриптов находятся в подпапках. Поэтому мне пришлось отредактировать файл .htaccess для установки php.ini, который будет использоваться рекурсивно (в подпапках):

 suphp_configpath /home/account_name/public_html 

где account_name – ваше имя учетной записи cpanel, а public_html – это папка, в которой находится ваш файл php.ini.