A partir de PHP 5.1.0, puede usar date_default_timezone_set() función para establecer la zona horaria predeterminada utilizada por todas las funciones de fecha/hora en un script.
Para MySql (citado de MySQL Server Time Zone Support página)
Es de su interés la configuración por conexión de las zonas horarias, que usaría al comienzo de sus scripts
SET timezone = 'Europe/London';
En cuanto a la detección de la configuración de la zona horaria del cliente, puede usar un poco de JavaScript para obtener y guardar esa información en una cookie y usarla en lecturas de páginas posteriores para calcular la zona horaria adecuada.
//Returns the offset (time difference) between Greenwich Mean Time (GMT)
//and local time of Date object, in minutes.
var offset = new Date().getTimezoneOffset();
document.cookie = 'timezoneOffset=' + escape(offset);
O podría ofrecer a los usuarios la opción de establecer ellos mismos sus zonas horarias.