Это происходит потому, что в выпуске 5.3 разработчики PHP приняли решение потребовать, чтобы часовой пояс был явно установлен в файле PHP.ini (или в .htaccess, или с использованием date_default_timezone_set()
). Причина, по которой это было сделано, заключалась в предполагаемой проблеме с более ранними версиями PHP, где часовой пояс не был установлен, и люди полагались на значение по умолчанию, которое часто было неправильным (например, потому что они использовали размещенный сервер в другом часовом поясе). Было большое количество серьезных проблем, вызванных этим, и требование явной установки было попыткой решить эти проблемы.
Решение состоит в том, чтобы убедиться, что ваш файл PHP.ini содержит настройку часового пояса. Если вы находитесь на общем хосте и не можете обновить PHP.ini, вы можете установить его в локальном файле .htaccess (при условии, что вы находитесь на сервере Apache; другое серверное программное обеспечение может отличаться). И если вы не можете установить его там, то вы должны установить его в коде.
У вашего хоста явно не установлен часовой пояс в PHP.ini. Учитывая, что сервер только обновляется с PHP 5.2, это неудивительно; 5.2 не требует его установки (по умолчанию он соответствует системному часовому поясу), поэтому его легко пропустить при обновлении.
С вашей точки зрения, вы можете полностью избежать разговора с хостом, установив часовой пояс в .htaccess. Просто создайте файл .htaccess (или отредактируйте существующий) со следующей строкой:
php_value date.timezone "America/Chicago"
Тем не менее, в идеале он действительно должен быть установлен в файле PHP.ini, и если он находится под контролем ваших хостов, то было бы хорошо, если бы вы подняли его вместе с ними — не устанавливать это очень ясно. знак того, что они на самом деле ничего не знают о PHP, и они, конечно же, не проверяли свою конфигурацию после обновления. Это должно вас беспокоить, так как из-за этого могут возникнуть другие проблемы; в PHP между версиями 5.2 и 5.3 произошли некоторые существенные изменения, ряд функций устарел, а значения конфигурации по умолчанию изменены, о чем вам и вашему хосту действительно нужно знать при выполнении этого обновления.
Интересно, что решение об этом предупреждении о часовом поясе на самом деле сейчас находится в процессе отмены: с предстоящим выпуском PHP 7.0 вам больше не нужно будет явно указывать часовой пояс в PHP.ini. Подробнее об этом изменении можно прочитать здесь: https://wiki.php.net/rfc/date.timezone_warning_removal. Это, очевидно, не повлияет на вас сейчас, но, тем не менее, это интересно.
Пока я отвечаю, я хотел бы повторить абзац выше — т. е. выпуск PHP7 в следующем месяце — и отметить, что вы обновляете версию PHP, которая уже давно устарела.
PHP 5.3 был объявлен End Of Life более года назад (август 2014 г.), и с тех пор не было никаких обновлений. Даже PHP 5.4 теперь устарел (хотя это произошло только что). Я очень рад слышать, что вы отказываетесь от версии 5.2, но вам не следует соглашаться на версию 5.3: я настоятельно рекомендую вам обновиться сейчас, пока вы все равно выполняете работу по обновлению, потому что в противном случае это будет стоить вам больше времени в будущем.
Я не предлагаю полностью перейти на PHP7, но вы должны рассматривать 5.4 как абсолютный минимум, а 5.5 или 5.6 как предпочтительные версии сегодня. Безусловно, самая большая проблема при обновлении с 5.2 до 5.3, так что вы уже проделали тяжелую работу; переместить еще одну или две версии сейчас вряд ли будет дополнительной работой, пока вы все равно это делаете.
person
Simba
schedule
16.11.2015
php.ini
файлы. - person ceejayoz   schedule 16.11.2015