To get a list programmatically, I use \DateTimeZone::listIdentifiers() (you may encounter its alias timezone_identifiers_list()): http://php.net/DateTimeZone.listIdentifiers
Here you'll find the complete list of timezones supported by PHP, which are meant to be used with e.g. date_default_timezone_set().
Note: The latest version of the timezone database can be installed via PECL's » timezonedb.
Note: This list is based upon the timezone database version 2015.6.
To get a list programmatically, I use \DateTimeZone::listIdentifiers() (you may encounter its alias timezone_identifiers_list()): http://php.net/DateTimeZone.listIdentifiers
Follow up to William's helpful advice:
php -r 'echo join(timezone_identifiers_list(), ",");'