Я получил эту ошибку, когда попросил обновить версию 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...".
Я сделал следующие изменения, чтобы заставить его работать. Разделяйте эти данные, если кто-то сталкивается с подобной проблемой, и ни один из вышеперечисленных ответов не помог.
ntpstat
. Если вы получите ошибку, эта ссылка поможет вам узнать, что происходит не так. date.timezone
не была установлена ни в какое значение, а также она была прокомментирована по умолчанию. Я не комментировал, удалив ';' перед этой строкой и установите ее значение в "UTC"
и сохраните файл. 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.