Ошибка даты и времени Codeception

Я пытаюсь изучить Codeception и использую его с Yii (в котором я тоже новичок).

Прямо из коробки у меня возникли некоторые проблемы с запуском тестов. Я просмотрел руководство по быстрому запуску, и когда я запускаю его через терминал, я получаю эту ошибку:

Codeception PHP Testing Framework v1.6.6
Powered by PHPUnit 3.7.24 by Sebastian Bergmann.

  [Exception]                                                                                                                                         
  DateTime::__construct(): 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 tim  
  ezone identifier. We selected 'America/Chicago' for 'CDT/-5.0/DST' instead                                                                          

Теперь я использую MAMP и установил часовой пояс в файле php.ini. Я также пытался вручную установить его в файле index.php с помощью _default_timezone_set('America/Chicago');, но все равно получаю то же сообщение.

Поскольку я использую Yii, я попытался включить модуль Yii для Codeception, но, похоже, это не имеет никакого значения.

Обновить

Я пытался установить кодецепцию в проект, не основанный на yii, поэтому на прямом веб-сайте я получаю ту же ошибку, что и выше.


person TH1981    schedule 12.09.2013    source источник
comment
Вы можете попробовать правильную функцию: date_default_timezone_set (обратите внимание, как заканчивается предыдущая строка в вашем сообщении об ошибке, вероятно, из-за размера терминала).   -  person kekkis    schedule 13.09.2013


Ответы (3)


У меня была такая же проблема, и я обнаружил, что установка параметра date.timezone в php.ini решила проблему.

  1. Откройте php.ini (на Mac это /private/etc/php.ini)
  2. Найдите «часовой пояс». Первым хитом должна быть эта настройка
  3. Раскомментируйте строку ;date.timezone = (уберите ;)
  4. Добавьте свой часовой пояс в виде строки, например. "America/New_York", поэтому полная строка читается как date.timezone = "America/New_York"
  5. Сохраните файл и перезапустите веб-сервер.

Список параметров часового пояса находится здесь: http://www.php.net/manual/en/timezones.php

Надеюсь, это поможет.

person evanmcd    schedule 13.09.2013

Хотя да, проблема в файле php.ini, в конечном итоге моя проблема заключалась в использовании php прямо из коробки на Mac. По-видимому, установка по умолчанию (в /usr/bin) — это то, что используется с терминала, а не установка PHP с Mac. кроме того, эта установка по умолчанию не имеет связанного файла php.ini.

Я нашел следующую инструкцию с форума для Yii, который также играл и оказался с той же ошибкой:

A note on PHP and Mac OSX:
A version of PHP4 comes bundled on Mac OSX and is typically what is executed when you try the php command from the command line.  You need to have the php command execute a version of PHP5.x or higher.  Usually, you have already installed a version of PHP5.x or higher, but need to tell the php command to execute the newer version rather than the older one.  There are certainly many ways to achieve this, but here is one:
at any terminal prompt, type in:
prompt>which php
this should tell you where the OS is looking for the php command
mine tells me /usr/bin/php
if I navigate to /usr/bin and issue an ls *php* I will see three files
php
php-config
phpize
These are all for the bundled version PHP4.x
rename these files to use a 4 in their names, to remember these are the executables for PHP4
mv php php4
mv php-config php-config4
mv phpize phpize4
Then, create sym links for each of these these to point to the PHP5.x or higher version you have installed.  In my case these are located in /usr/local/apache/php/bin.  So I would issue from the /usr/bin directory
ln -s [absolute path to your php5.x] php
and similarly for the other files.
person TH1981    schedule 18.09.2013
comment
Рекомендация: не используйте dev ENV, который отличается от вашего рабочего ENV. IE: используйте экземпляр VM/vagrant/docker для хранения вашего приложения. Это поддерживает паритет между вашими средами и предотвращает будущие проблемы «я не знаю, почему это не работает в производственной среде, это работает на машине». - person David J Eddy; 13.03.2016

набор

use date_default_timezone_set('Europe/Istanbul');

в автозагрузке.php

person user5349545    schedule 18.09.2015