"Timezone ID '/localtime' is invalid" im Cron-Protokoll

Dieses Thema im Forum "Entwicklerforum" wurde erstellt von reto27, 23. Okt. 2012.

  1. reto27

    reto27 New Member

    Hallo,
    ich teste die Alpha1 der 3.0.5 Version. Server ist Debian 64Bit. Alles funktioniert prima. Jobs werden ordentlich abgearbeitet.
    Aber im ISP Cron-Protokoll gibts folgende Fehlermeldung:
    PHP Notice: date_default_timezone_set(): Timezone ID '/localtime' is invalid in /usr/local/ispconfig/server/lib/app.inc.php on line 32

    In den beiden config.inc.php-Dateien hab ich die Timezone auf UTC gesetzt.
    Das hat aber keinen Einfluss auf die Fehlermeldung.

    Bin im Moment ratlos :(

    tschüss reto
     
  2. Till

    Till Administrator

    Die Timezone wird aber nur dort und in der php.ini gesetzt. Versich mal "Europe/Berlin" als timezone in den config.inc.php dateien. Wenn das nicht hilfat, dann schau mal in alle php.ini daeien in /etc/php5/cgi/ und /etc/php5/cli/ ob dort die Timezone irgendwo falsch drin steht
     
  3. reto27

    reto27 New Member

    Danke Till,
    ich hab die Timezone auf Europe/Berlin gesetzt, auch in den php.inis (dort waren die Einträge vorher auskommentiert). Die cron.log hab ich geleert.
    Jetzt scheint alles zu laufen.

    tschüss
    reto
     
  4. Croydon

    Croydon Super-Moderator

    Hallo reto.

    Kannst du bitte einmal schauen, was bei dir in der Datei /etc/timezone (falls vorhanden) steht.

    Dann bitet noch die ausgabe von
    ls -l /etc/localtime

    Dankesehr.
     
  5. reto27

    reto27 New Member

    Moin,
    mach ich gerne - in der /etc/timezone steht "Europe/Berlin" und die Ausgabe von ls ergibt dieses:

    lrwxrwxrwx 1 root root 33 24. Okt 09:24 /etc/localtime -> /usr/share/zoneinfo/Europe/Berlin

    Und wie oben schon geschrieben, tauchte die Fehlermeldung nach den Hinweisen von Till nicht mehr auf.

    tschüss ReTo
     
  6. Croydon

    Croydon Super-Moderator

    Hallo und danke für die Infos.
    Dass die Einstellungen so funktionieren ist schön ;) allerdings wird die Einstellung in config.inc.php durch das Installationsskript gesetzt und hier könnte noch ein Fehler in der Erkennung der Zeitzone vorhanden sein.

    Es wäre nett, wenn du einmal folgendes Skript auf den Server laden und via Kommandozeile ausführen könntest.
    Das Skript verändert nichts, es soll lediglich darstellen, welche Zeitzone es auslesen würde und mit welcher Methode.

    Vielen Dank

    PHP:
    #!/usr/bin/php
    <?php
    /* timezone search */

    function find_hash_file($hash$dir$basedir '') {
        
    $res opendir($dir);
        if(!
    $res) return false;
       
        if(
    substr($basedir, -1) === '/'$basedir substr($basedir0strlen($basedir) - 1);
        if(
    substr($dir, -1) === '/'$dir substr($dir0strlen($dir) - 1);
        if(
    $basedir === ''$basedir $dir;
       
        while(
    $cur readdir($res)) {
            if(
    $cur == '.' || $cur == '..') continue;
            
    $entry $dir.'/'.$cur;
            if(
    is_dir($entry)) {
                
    $result find_hash_file($hash$entry$basedir);
                if(
    $result !== false) return $result;
            } elseif(
    md5_file($entry) === $hash) {
                
    $entry substr($entrystrlen($basedir) + 1);
                if(
    substr($entry07) === '/posix/'$entry substr($entry7);
                return 
    $entry;
            }
        }
        
    closedir($res);
        return 
    false;
    }

    function 
    get_system_timezone() {
        
    $timezone false;
        if(
    file_exists('/etc/timezone') && is_readable('/etc/timezone')) {
            
    $timezone trim(file_get_contents('/etc/timezone'));
            if(
    file_exists('/usr/share/zoneinfo/' $timezone) == false$timezone false;
            else print 
    "Methode 1\n";
        }
        
        if(!
    $timezone && is_link('/etc/localtime')) {
            
    $timezone readlink('/etc/localtime');
            
    $timezone str_replace('/usr/share/zoneinfo/'''$timezone);
            if(
    substr($timezone06) === 'posix/'$timezone substr($timezone6);
            print 
    "Methode 2\n";
        } elseif(!
    $timezone) {
            
    $hash md5_file('/etc/localtime');
            
    $timezone find_hash_file($hash'/usr/share/zoneinfo');
            print 
    "Methode 3\n";
        }

        if(!
    $timezone) {
            
    exec('date +%Z'$tzinfo);
            
    $timezone $tzinfo[0];
            print 
    "Methode 4\n";
        }

        return 
    $timezone;
    }

    print 
    "Timezone: " get_system_timezone() . "\n";
    ?>
     
  7. reto27

    reto27 New Member

    bitte, gerne - hier das Ergebnis:


    Methode 1
    Timezone: Europe/Berlin

    tschüss ReTo
     
  8. Croydon

    Croydon Super-Moderator

    Sehr schön, danke. Dann klappt die Erkennung nun bei dir (bzw solchen Servern) auch korrekt.
     

Diese Seite empfehlen