Some linux dsitributions (eg: debian) use the disrio-provided zoneinfo database (/usr/share/zoneinfo). This means to get a list of timezones programmatically you can search through that directory (recursively). This also means that zones used by other software that use this zoneinfo database (eg postgresql) will also be supported by php.
List of Supported Timezones
Table of Contents
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 2013.3.