Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set date.timezone for CodeIgniter to work with php 5.3

When date.timezone in php.ini is commented out, it gives me:

A PHP Error was encountered

Severity: Warning

Message: main(): 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/Los_Angeles' for '-8.0/no DST' instead

Filename: controllers/helloworld.php

Line Number: 2

When I have

date.timezone = "America/Los_Angeles" 

It gives me this:

Server error The website encountered an error while retrieving http://localhost/ci/index.php/helloworld. It may be down for maintenance or configured incorrectly. Here are some suggestions: Reload this web page later. HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

I am using php 5.3, CodeIgniter 2.0.0, and Apache 2.2.

Update 1: I tried loading a test.php without CodeIgniter, where the first 3 lines of test.php is

date_default_timezone_set('America/Los_Angeles'); echo date("l j \of F Y h:i:s A"); 

And it works fine, different timezones also works fine too. So I suspect the problem is from CodeIgniter.

like image 727
Snowfish Avatar asked Feb 03 '11 05:02

Snowfish


People also ask

How do you set default timezone in CodeIgniter?

PHP date_default_timezone_set() function is used to sets the default timezone used by all date or time functions. In CodeIgniter, the best place to set the timezone is index. php file of application root. Place the date_default_timezone_set() with your desired timezone in the main index.

What timezone is UTC for PHP?

The default timezone for PHP is UTC regardless of your server's timezone. This is the timezone used by all PHP date/time functions in your scripts. See PHP's list of supported timezones to find the names of all possible timezones you can use for the date.


2 Answers

If you Googled "CodeIgniter PHP 5.3" you would have found this article pretty quickly :)

http://philsturgeon.co.uk/blog/2009/12/CodeIgniter-on-PHP-5.3

To fix this, you only need to edit the main index.php for your CodeIgniter application:

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

This modification is something you will probably need to make for any CodeIgniter application running on PHP 5.3 and can easily be modified to your local timezone. There is a full list of supported timezones in the PHP manual here.

like image 82
Phil Sturgeon Avatar answered Sep 22 '22 14:09

Phil Sturgeon


Yes, if you cannot directly edit the php.ini file, placing...

ini_set('date.timezone', 'America/New_York'); 

...as the first line in CI's index.php works fine.

Reference: PHP's Available Timezones

like image 35
Mavelo Avatar answered Sep 23 '22 14:09

Mavelo