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

#1
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
 

Till

Administrator
#2
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
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
 

Croydon

Super-Moderator
#4
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
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
 

Croydon

Super-Moderator
#6
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($basedir, 0, strlen($basedir) - 1);
    if(substr($dir, -1) === '/') $dir = substr($dir, 0, strlen($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($entry, strlen($basedir) + 1);
            if(substr($entry, 0, 7) === '/posix/') $entry = substr($entry, 7);
            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($timezone, 0, 6) === 'posix/') $timezone = substr($timezone, 6);
        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";
?>
 

Werbung