Installation failed with 3.0.4 - error message : Website time zone is not valid

As reported on github, this is also happening on 3.0.4. I also appended this to an existing thread, but thought it best to open a new one (Installation failed with 3.0.1 - error message : Website time zone is not valid).

Tried setting date.timezone in php.ini (even tried a few).

Same behavior with Chrome and Firefox.

The <select> tag is there in the HTML, but it’s not being displayed for some reason. Might be related to the javascript error/s below.

Errors in chrome console (which prevents Next from succeeding, resulting in the same error as others have complained about):

index.php:331 Uncaught SyntaxError: Unexpected token return
menudropdown.directive.js:20 Uncaught ReferenceError: angular is not defined
    at menudropdown.directive.js:20
    at menudropdown.directive.js:76
languageselector.directive.js:14 Uncaught ReferenceError: angular is not defined
    at languageselector.directive.js:14
    at languageselector.directive.js:36

Here’s the entire HTML from index.php (some clipped so I could post):

<!DOCTYPE html>
<html id="ng-app" ng-app="piwikApp">
<head>
    <meta charset="utf-8">
    <meta name="robots" content="noindex,nofollow">
    <title>Piwik 3.0.4 &rsaquo; Installation</title>

    <link rel="stylesheet" type="text/css" href="index.php?module=Installation&amp;action=getInstallationCss&amp;cb=ab82c878009c11737d9de5de9a43f1b1" />
    <script type="text/javascript" src="index.php?module=Installation&amp;action=getInstallationJs&amp;cb=a4c6a5725baaaddd52b68ca0aa68b277"></script>

    <link rel="shortcut icon" href="plugins/CoreHome/images/favicon.png"/>
</head>
<body ng-app="app" id="installation">

<div class="container">

    <div class="header">
        <div class="logo">
            <img title="Piwik 3.0.4 - free&#x2F;libre&#x20;analytics&#x20;platform" src="plugins/Morpheus/images/logo.png"/>
            <p>free/libre analytics platform</p>
        </div>
        <div class="language-selector">
            <script type='text/javascript'>if (!window.piwik) window.piwik={};</script><script type="text/javascript" src="plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js?cb=a4c6a5725baaaddd52b68ca0aa68b277"></script><script type="text/javascript" src="plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js?cb=a4c6a5725baaaddd52b68ca0aa68b277"></script><div class="languageSelection"
     ng-cloak
     menu-title="English"
     piwik-menudropdown>
    <a class="item"
        href="?module=Proxy&amp;action=redirect&amp;url=http://piwik.org/translations/">About Piwik translations</a>
            <a class="item "
           value="am"
           title="አማርኛ (Amharic)">አማርኛ</a>
            <a class="item "
           value="ar"
           title="العربية (Arabic)">العربية</a>
            <a class="item "
           value="be"
           title="Беларуская (Belarusian)">Беларуская</a>
            <a class="item "
           value="bg"
           title="Български (Bulgarian)">Български</a>
            <a class="item "
           value="bn"
           title="বাংলা (Bangla)">বাংলা</a>
            <a class="item "
           value="bs"
           title="Bosanski (Bosnian)">Bosanski</a>
            <a class="item "
           value="ca"
           title="Català (Catalan)">Català</a>
            <a class="item "
           value="cs"
           title="Čeština (Czech)">Čeština</a>
            <a class="item "
           value="cy"
           title="Cymraeg (Welsh)">Cymraeg</a>
            <a class="item "
           value="da"
           title="Dansk (Danish)">Dansk</a>
            <a class="item "
           value="de"
           title="Deutsch (German)">Deutsch</a>
            <a class="item "
           value="el"
           title="Ελληνικά (Greek)">Ελληνικά</a>
            <a class="item active"
           value="en"
           title="English (English)">English</a>
            <a class="item "
           value="es"
           title="Español (Spanish)">Español</a>
            <a class="item "
           value="et"
           title="Eesti (Estonian)">Eesti</a>
            <a class="item "
           value="eu"
           title="Euskara (Basque)">Euskara</a>
            <a class="item "
           value="fa"
           title="فارسی (Persian)">فارسی</a>
            <a class="item "
           value="fi"
           title="Suomi (Finnish)">Suomi</a>
            <a class="item "
           value="fr"
           title="Français (French)">Français</a>
            <a class="item "
           value="gl"
           title="Galego (Galician)">Galego</a>
            <a class="item "
           value="he"
           title="עברית (Hebrew)">עברית</a>
            <a class="item "
           value="hi"
           title="हिन्दी (Hindi)">हिन्दी</a>
            <a class="item "
           value="hr"
           title="Hrvatski (Croatian)">Hrvatski</a>
            <a class="item "
           value="hu"
           title="Magyar (Hungarian)">Magyar</a>
            <a class="item "
           value="id"
           title="Indonesia (Indonesian)">Indonesia</a>
            <a class="item "
           value="is"
           title="Íslenska (Icelandic)">Íslenska</a>
            <a class="item "
           value="it"
           title="Italiano (Italian)">Italiano</a>
            <a class="item "
           value="ja"
           title="日本語 (Japanese)">日本語</a>
            <a class="item "
           value="ka"
           title="ქართული (Georgian)">ქართული</a>
            <a class="item "
           value="ko"
           title="한국어 (Korean)">한국어</a>
            <a class="item "
           value="lt"
           title="Lietuvių (Lithuanian)">Lietuvių</a>
            <a class="item "
           value="lv"
           title="Latviešu (Latvian)">Latviešu</a>
            <a class="item "
           value="nb"
           title="Norsk bokmål (Norwegian Bokmål)">Norsk bokmål</a>
            <a class="item "
           value="nl"
           title="Nederlands (Dutch)">Nederlands</a>
            <a class="item "
           value="nn"
           title="Nynorsk (Norwegian Nynorsk)">Nynorsk</a>
            <a class="item "
           value="pl"
           title="Polski (Polish)">Polski</a>
            <a class="item "
           value="pt-br"
           title="Português (Brasil) (Brazilian Portuguese)">Português (Brasil)</a>
            <a class="item "
           value="pt"
           title="Português (Portuguese)">Português</a>
            <a class="item "
           value="ro"
           title="Română (Romanian)">Română</a>
            <a class="item "
           value="ru"
           title="Русский (Russian)">Русский</a>
            <a class="item "
           value="sk"
           title="Slovenčina (Slovak)">Slovenčina</a>
            <a class="item "
           value="sl"
           title="Slovenščina (Slovenian)">Slovenščina</a>
            <a class="item "
           value="sq"
           title="Shqip (Albanian)">Shqip</a>
            <a class="item "
           value="sr"
           title="Српски (Serbian)">Српски</a>
            <a class="item "
           value="sv"
           title="Svenska (Swedish)">Svenska</a>
            <a class="item "
           value="ta"
           title="தமிழ் (Tamil)">தமிழ்</a>
            <a class="item "
           value="te"
           title="తెలుగు (Telugu)">తెలుగు</a>
            <a class="item "
           value="th"
           title="ไทย (Thai)">ไทย</a>
            <a class="item "
           value="tl"
           title="Tagalog (Tagalog)">Tagalog</a>
            <a class="item "
           value="tr"
           title="Türkçe (Turkish)">Türkçe</a>
            <a class="item "
           value="uk"
           title="Українська (Ukrainian)">Українська</a>
            <a class="item "
           value="vi"
           title="Tiếng Việt (Vietnamese)">Tiếng Việt</a>
            <a class="item "
           value="zh-cn"
           title="简体中文 (Simplified Chinese)">简体中文</a>
            <a class="item "
           value="zh-tw"
           title="繁體中文 (Traditional Chinese)">繁體中文</a>
    
    <form action="index.php?module=LanguagesManager&amp;action=saveLanguage" method="post">
        <input type="hidden" name="language" id="language">
                <input type="hidden" name="token_auth" value="anonymous"/>    </form>
</div>

        </div>

        <div class="installation-progress">
            <h4>
                Installation status
                <small>71%</small>
            </h4>
            <div class="progress">
                <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 71%;"></div>
            </div>
        </div>

        <div class="clearfix"></div>
    </div>

    <div class="row">
        <div class="col s3">
            <ul class="list-group">
                                                                                                    <li class="list-group-item disabled">1. Welcome!</li>
                                                                                                    <li class="list-group-item disabled">2. System Check</li>
                                                                                                    <li class="list-group-item disabled">3. Database Setup</li>
                                                                                                    <li class="list-group-item disabled">4. Creating the Tables</li>
                                                                                                    <li class="list-group-item disabled">5. Super User</li>
                                                                                                    <li class="list-group-item active">6. Setup a Website</li>
                                                                                                    <li class="list-group-item ">7. JavaScript Tracking Code</li>
                                                                                                    <li class="list-group-item ">8. Congratulations</li>
                            </ul>
        </div>
        <div class="col s9 content">
                        
            
    <h2>Setup a Website</h2>

            <div id="feedback" class="alert alert-success">
            Super User created successfully!
        </div>
    
    <p>Please setup the first website you would like to track and analyse with Piwik:</p>

    
            
<form  action="?action=firstWebsiteSetup&amp;module=Installation&amp;deleteTables=1" name="websitesetupform" id="websitesetupform" method="post">
        

                        <div class="row form-group">
                <div class="col s12 m12 l6">
                                            <label>
                            Website name
                        </label>
                        <input type="text" name="siteName" id="siteName-0" />
                                    </div>
            </div>
                                <div class="row form-group">
                <div class="col s12 m12 l6">
                                            <label>
                            Website URL
                        </label>
                        <input type="text" name="url" id="url-0" style="color:rgb(153, 153, 153);" onfocus="javascript:if (this.value==&#039;http://example.org&#039;){this.value=&#039;http://&#039;;} this.style.color=&#039;black&#039;;" onclick="javascript:if (this.value==&#039;http://example.org&#039;){this.value=&#039;http://&#039;;} this.style.color=&#039;black&#039;;" value="http://example.org" />
                                    </div>
            </div>
                                <div class="row form-group">
                <div class="col s12 m12 l6">
                                            <label>
                            Website time zone
                        </label>
                        <select name="timezone" id="timezone-0">
	<option value="No timezone">Select a city</option>
	<optgroup label="Africa">
		<option value="Africa/Abidjan">Abidjan</option>
		<option value="Africa/Accra">Accra</option>
		<option value="Africa/Addis_Ababa">Addis Ababa</option>
		<option value="Africa/Algiers">Algiers</option>
		<option value="Africa/Asmara">Asmara</option>
		<option value="Africa/Bamako">Bamako</option>
		<option value="Africa/Bangui">Bangui</option>
		<option value="Africa/Banjul">Banjul</option>
		<option value="Africa/Bissau">Bissau</option>
		<option value="Africa/Blantyre">Blantyre</option>
		<option value="Africa/Brazzaville">Brazzaville</option>
		<option value="Africa/Bujumbura">Bujumbura</option>
		<option value="Africa/Cairo">Cairo</option>
		<option value="Africa/Casablanca">Casablanca</option>
		<option value="Africa/Ceuta">Ceuta</option>
		<option value="Africa/Conakry">Conakry</option>
		<option value="Africa/Dakar">Dakar</option>
		<option value="Africa/Dar_es_Salaam">Dar es Salaam</option>
		<option value="Africa/Djibouti">Djibouti</option>
		<option value="Africa/Douala">Douala</option>
		<option value="Africa/El_Aaiun">El Aaiun</option>
		<option value="Africa/Freetown">Freetown</option>
		<option value="Africa/Gaborone">Gaborone</option>
		<option value="Africa/Harare">Harare</option>
		<option value="Africa/Johannesburg">Johannesburg</option>
		<option value="Africa/Juba">Juba</option>
		<option value="Africa/Kampala">Kampala</option>
		<option value="Africa/Khartoum">Khartoum</option>
		<option value="Africa/Kigali">Kigali</option>
		<option value="Africa/Kinshasa">Kinshasa</option>
		<option value="Africa/Lagos">Lagos</option>
		<option value="Africa/Libreville">Libreville</option>
		<option value="Africa/Lome">Lome</option>
		<option value="Africa/Luanda">Luanda</option>
		<option value="Africa/Lubumbashi">Lubumbashi</option>
		<option value="Africa/Lusaka">Lusaka</option>
		<option value="Africa/Malabo">Malabo</option>
		<option value="Africa/Maputo">Maputo</option>
		<option value="Africa/Maseru">Maseru</option>
		<option value="Africa/Mbabane">Mbabane</option>
		<option value="Africa/Mogadishu">Mogadishu</option>
		<option value="Africa/Monrovia">Monrovia</option>
		<option value="Africa/Nairobi">Nairobi</option>
		<option value="Africa/Ndjamena">Ndjamena</option>
		<option value="Africa/Niamey">Niamey</option>
		<option value="Africa/Nouakchott">Nouakchott</option>
		<option value="Africa/Ouagadougou">Ouagadougou</option>
		<option value="Africa/Porto-Novo">Porto-Novo</option>
		<option value="Africa/Sao_Tome">Sao Tome</option>
		<option value="Africa/Tripoli">Tripoli</option>
		<option value="Africa/Tunis">Tunis</option>
		<option value="Africa/Windhoek">Windhoek</option>
	</optgroup>
	<optgroup label="America">
		<option value="America/Adak">Adak</option>
		
		<option value="America/Yellowknife">Yellowknife</option>
	</optgroup>
	<optgroup label="Antarctica">
		<option value="Antarctica/Casey">Casey</option>
		<option value="Antarctica/Davis">Davis</option>
		<option value="Antarctica/DumontDUrville">DumontDUrville</option>
		<option value="Antarctica/Macquarie">Macquarie</option>
		<option value="Antarctica/Mawson">Mawson</option>
		<option value="Antarctica/McMurdo">McMurdo</option>
		<option value="Antarctica/Palmer">Palmer</option>
		<option value="Antarctica/Rothera">Rothera</option>
		<option value="Antarctica/Syowa">Syowa</option>
		<option value="Antarctica/Troll">Troll</option>
		<option value="Antarctica/Vostok">Vostok</option>
	</optgroup>
	<optgroup label="Arctic">
		<option value="Arctic/Longyearbyen">Longyearbyen</option>
	</optgroup>
	<optgroup label="Asia">
		<option value="Asia/Aden">Aden</option>
		
		<option value="Asia/Yerevan">Yerevan</option>
	</optgroup>
	<optgroup label="Atlantic">
		<option value="Atlantic/Azores">Azores</option>
		<option value="Atlantic/Bermuda">Bermuda</option>
		<option value="Atlantic/Canary">Canary</option>
		<option value="Atlantic/Cape_Verde">Cape Verde</option>
		<option value="Atlantic/Faroe">Faroe</option>
		<option value="Atlantic/Madeira">Madeira</option>
		<option value="Atlantic/Reykjavik">Reykjavik</option>
		<option value="Atlantic/South_Georgia">South Georgia</option>
		<option value="Atlantic/St_Helena">St Helena</option>
		<option value="Atlantic/Stanley">Stanley</option>
	</optgroup>
	<optgroup label="Australia">
		<option value="Australia/Adelaide">Adelaide</option>
		<option value="Australia/Brisbane">Brisbane</option>
		<option value="Australia/Broken_Hill">Broken Hill</option>
		<option value="Australia/Currie">Currie</option>
		<option value="Australia/Darwin">Darwin</option>
		<option value="Australia/Eucla">Eucla</option>
		<option value="Australia/Hobart">Hobart</option>
		<option value="Australia/Lindeman">Lindeman</option>
		<option value="Australia/Lord_Howe">Lord Howe</option>
		<option value="Australia/Melbourne">Melbourne</option>
		<option value="Australia/Perth">Perth</option>
		<option value="Australia/Sydney">Sydney</option>
	</optgroup>
	<optgroup label="Europe">
		<option value="Europe/Amsterdam">Amsterdam</option>
		
		<option value="Europe/Zurich">Zurich</option>
	</optgroup>
	<optgroup label="Indian">
		<option value="Indian/Antananarivo">Antananarivo</option>
		
		<option value="Pacific/Wallis">Wallis</option>
	</optgroup>
	<optgroup label="UTC">
		<option value="UTC-12">UTC-12</option>
		
		<option value="UTC+14">UTC+14</option>
	</optgroup>
</select>
                                    </div>
            </div>
                                <div class="row form-group">
                <div class="col s12 m12 l6">
                                            <label>
                            Ecommerce
                        </label>
                        <select name="ecommerce" id="ecommerce-0">
	<option value="0">Not an Ecommerce site</option>
	<option value="1">Ecommerce enabled</option>
</select>
                                    </div>
            </div>
            
            <div class="row">
            <div class="col s12">
                <input type="submit" value="Next »" class="btn" name="submit" id="submit-0" />
            </div>
        </div>
    </form>
        <div class="clearfix"></div>

    <p><em>Note: once the Piwik Install is finished, you will be able to add more Websites to track!</em></p>


                    </div>
    </div>

</div>

</body>
</html>

Here’s the menudropdown.directive.js:

/*!
 * Piwik - free/libre analytics platform
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

/**
 * Usage:
 * <div piwik-menudropdown menu-title="MyMenuItem" tooltip="My Tooltip" show-search="false">
 *     <a class="item" href="/url">An Item</a>
 *     <a class="item disabled">Disabled</a>
 *     <a class="item active">Active item</a>
 *     <hr class="item separator"/>
 *     <a class="item disabled category">Category</a>
 *     <a class="item" href="/url"></a>
 * </div>
 */
(function () {
    angular.module('piwikApp').directive('piwikMenudropdown', piwikMenudropdown);

    function piwikMenudropdown(){

        return {
            transclude: true,
            replace: true,
            restrict: 'A',
            scope: {
                menuTitle: '@',
                tooltip: '@',
                showSearch: '=',
                menuTitleChangeOnClick: '='
            },
            templateUrl: 'plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html?cb=' + piwik.cacheBuster,
            link: function(scope, element, attrs) {

                scope.selectItem = function (event) {
                    var $self = angular.element(event.target);

                    if (!$self.hasClass('item') || $self.hasClass('disabled') || $self.hasClass('separator')) {
                        return;
                    }

                    if (scope.menuTitleChangeOnClick !== false) {
                        scope.menuTitle = $self.text().replace(/[\u0000-\u2666]/g, function(c) {
                            return '&#'+c.charCodeAt(0)+';';
                        });
                    }
                    scope.$eval('view.showItems = false');

                    setTimeout(function () {
                        scope.$apply();
                    }, 0);

                    element.find('.item').removeClass('active');
                    $self.addClass('active');
                };

                scope.searchItems = function (searchTerm)
                {
                    searchTerm = searchTerm.toLowerCase();

                    element.find('.item').each(function (index, node) {
                        var $node = angular.element(node);

                        if (-1 === $node.text().toLowerCase().indexOf(searchTerm)) {
                            $node.hide();
                        } else {
                            $node.show();
                        }
                    });
                };
            }
        };
    }
})();

and lastly languageselector.directive.js:

/*!
 * Piwik - free/libre analytics platform
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

/**
 * Usage:
 * <div class="languageSelection">
 * </div>
 */
(function () {
    angular.module('piwikApp').directive('languageSelection', languageSelection);

    function languageSelection() {

        return {
            restrict: 'C',
            link: function(scope, element, attr, ctrl) {

                function postLanguageChange () {
                    var value = $(this).attr('value');
                    if (value) {
                        element.find('#language').val(value).parents('form').submit();
                    }
                }

                element.on('click', 'a[value]', postLanguageChange);
                scope.$on('$destroy', function() {
                    element.off('click', 'a[value]', postLanguageChange);
                });
            }
        };
    }
})();

Hi folks - any update/feedback? I’m happy to assist in resolving this issue - just tell me what you need.

Hi @Henry_Comb

Thanks for offering. Could you email your Piwik URL to us + link to the bug issue via Contact the Piwik team - Analytics Platform - Piwik
we’ll make sure to follow up and find a solution
Thanks

Will send URL and login details shortly.