The default time-zone used and displayed by PHP is UTC (Coordinated Universal Time)… Hence why it might look several hours off from your *local* time.
While sometimes it’s best to leave the internal time-zone of PHP set on UTC (as it is a international time standard) and then convert (in PHP code) the UTC date-time value to whichever time-zone you’d like to utilize and display…
To set your system’s or server’s PHP to use a specific time-zone…
Setting PHP’s Global TimeZone via php.ini
You can tell PHP to use your time-zone by setting the proper value of “date.timezone” in php.ini.
Change this –
date.timezone = "UTC"
To this –
For West Cost:
For East Cost:
For Central Time:
Save file (and be careful not to change it’s extension when doing so). Restart Apache.
Setting PHP’s Per-Website TimeZone via VirtualHost
You also have the option of leaving PHP’s global default on UTC (in php.ini), but changing it per-website…
Edit the website’s HTTP and HTTPS VirtualHost files (select website in WampDeveloper’s Websites Tab, click the VirtualHost buttons to open those files). Then within the <VirtualHost> block, insert –
php_admin_value date.timezone "America/New_York"
Or use directive “php_value” in the above line instead – if you also want to allow .htaccess files and PHP scripts in that website to be able to further change that value at run-time.
Save the VirtualHost files. Restart Apache.
Note that this will only work if PHP is ran as an Apache module (mod_php), and not as a FCGI process (PHP-FCGI) because that process is separate from Apache and can’t be configured by it.
Setting PHP’s Per-Directory TimeZone via .htaccess
For setting the time-zone per PHP script’s folder/directory…
Edit the website’s .htaccess file and add in the proper “php_value” setting (note that you can’t use “php_admin_value” in .htaccess files) –
php_value date.timezone "America/New_York"
Save the .htaccess file. There is no need to restart Apache after .htaccess edits.
In some cases, the time-zone might already be set there already.
This is the more portable way of setting the proper PHP values for your websites and scripts, but as mentioned above, those directives only work for mod_php and do not work for PHP-FCGI.
Setting PHP’s Per-Script TimeZone via Code
Use the PHP function ini_set() to set your runtime values in script code…
This is a good option if you are running PHP-FCGI, or are unable to make changes to php.ini, or can’t edit the website’s VirtualHost and .htaccess files.
It is important to always have a data.timezone value set. Otherwise, with this value undefined, PHP will:
1. Generate an error/warning for every time the date() and getdate() functions are called.
PHP Notice: in file /index.php on line x: 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.
2. Attempt to guess which timezone to use via OS settings, environment variables, and algorithms. In some cases this can negatively impact server performance by a factor of 2-5x (especially PHP 5.3 on Windows)!