Ошибка часового пояса PHP при использовании регистратора ошибок - PullRequest
0 голосов
/ 12 декабря 2011

Код для воспроизведения:

error_reporting(-1);

ini_set('display_errors', 1);
ini_set('error_log', 'log/log');        
ini_set('html_errors', 0);

// trigger an error
echo $test;

Если log/log доступен для записи и вы не установили date.timezone в php.ini или использовали date_default_timezone_set, вы увидите эту ошибку:

Предупреждение: main (): полагаться на часовой пояс системы небезопасно Настройки. Вы обязаны использовать параметр date.timezone или Функция date_default_timezone_set (). Если вы использовали какой-либо из этих методы, и вы все еще получаете это предупреждение, вы, скорее всего, неправильно указали идентификатор часового пояса. Мы выбрали «Европа / Париж» для '1.0 / no DST' вместо этого в C: \ srv \ www \ test.php в строке 10

Примечание: неопределенная переменная: test в C: \ srv \ www \ test.php в строке 10

Что чрезвычайно информативно. 10 строка в моем случае это echo $test;. PHP ничего не говорит о строке с настройкой регистратора ошибок.

Вы можете потратить много времени на большой проект, указывая на это.

Если log/log недоступно для записи, вы увидите только неопределенное уведомление о переменной.

Я думаю, что PHP мог бы использовать системные настройки часового пояса для журналов (что было бы довольно очевидно).

Является ли ошибка ошибкой и нужно ли сообщать об этом команде PHP? Btw. Я использую PHP 5.3.8 (не последний снимок)

1 Ответ

1 голос
/ 12 декабря 2011

Если ваш журнал доступен для записи, уведомление вызовет строку журнала, которая содержит отформатированную метку времени. Эта временная метка отображается в часовом поясе ваших серверов.

Теперь взгляните на ПРЕДУПРЕЖДЕНИЕ (это не ошибка). Это говорит: «Мы выбрали« Европа / Париж »вместо« 1.0 / no DST »вместо этого». PHP прочитал настроенный часовой пояс сервера (из / etc / timezone?) И получил «1.0 / no DST». Это не годная информация о часовом поясе (для php). Вместо этого он использует «Европа / Париж» как запасной вариант.

Если файл журнала недоступен для записи, предупреждение не выводится, поскольку не генерируется отформатированная строка времени.

Я не знаю, является ли "1.0 / no DST" допустимым форматом часового пояса, но я бы не стал ничего менять в вашем /etc/timezone.

Поэтому, пожалуйста, не отправляйте сообщение об ошибке;)

...