Setlocale() Meldung

Hallo,

ich erhalte folgende Meldung:

Warning:  setlocale() has been disabled for security reasons in C:\IP-Symcon_2_0\scripts\TimerEvent.ips.php on line

Was kann die Ursache dafür sein?

Wir deaktivieren diese Funktion bewusst, da diese grundsätzlich Probleme verursacht hat.

paresy

Hallo

ich hatte das gleiche Problem nach Umstieg auf die 5.0.
Ich habe den Befehl genutzt um beim Datum Wochentag und Monat in Deutsch anzuzeigen. Nach langen Suchen habe ich die Funktion deaktiviert. Ich hatte den Fehler in der Konfiguration des Raspi vermutet, aber nicht in Symcon. Hierzu sollte ein Hinweis in der Doku sein, aber einfach ausschliesen ist nicht die Lösung. Nun zeigt er eben erst einmal alles in Englisch an.

Schade.
Thomas

Dann stell das System doch auf Deutsch :smiley:
Michael

PHP 7 nutzt seit IP-Symcon 5.0 automatisch die Systemsprache korrekt. Wenn du also für den Root Nutzer die Sprache korrekt auf Deutsch stellst, sollten auch die Wochentage korrekt auf Deutsch angezeigt werden.

paresy

Hallo,

ich habe in der raspi-config alles auf Deutsch eingestellt. Die Wochentage und Monate kommen trotzdem auf Englisch.

Thomas

Dann steht der root noch auf Englisch.
Im IPS Log steht die erkannte local wenn es startet.
Michael

Guten Abend zusammen,

im log finde ich beim Start des Docker Containers „Detected locale: de_DE | Using locale: de“, trotzdem liefert die Funktion strftime() den Wochentag in Englisch. Gibt es dafür eine Lösung, abgesehen von dem Weg, die Namen per Skript zu tauschen?

Hallo zusammen,

das ist mein PHP Workaround dazu:

$datum = date("l j. F Y");


$english= array (    "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday",
                    "Mon","Tue","Wed","Thu","Fri","Sat","Sun",
                    "January","February","March","April","May","June",
                    "July","August","September","October","November","December",
                    "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
                
$dummy = array (    "%1%","%2%","%3%","%4%","%5%","%6%","%7%",
                    "%8%","%9%","%10%","%11%","%12%","%13%","%14%",
                    "%15%","%16%","%17%","%18%","%19%","%20%",
                    "%21%","%22%","%23%","%24%","%25%","%26%",
                    "%27%","%28%","%29%","%30%","%31%","%32%","%33%","%34%","%35%","%36%","%37%","%38%");
                    
                    
$deutsch = array (    "Montag","Dienstag","Mittwoch","Donnertag","Freitag","Samstag","Sonntag",
                    "Mo.","Di.","Mi.","Do.","Fr.","Sa.","So.",
                    "Januar","Februar","März","April","Mai","Juni",
                    "Juli","August","September","Oktober","November","Dezember",
                    "Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
                    
$datum = str_replace($dummy,$deutsch,str_replace($english,$dummy,$datum));

Die doppelte Umsetzung mit den Dummies erfolgt wegen den möglichen Abkürzungen. Sonst wird aus englisch „November“ zuerst deutsch „November“, aber dann kommt noch die Umsetzung der Abkürzungen und das Ergebnis wäre „Nov.ember“.

IMHO sieht es nach einem Bug in der RP-Version von Symcon aus.

Korrektur: Die Rückgabewerte von PHP-date sind immer englischsprachig und setlocale ändert nichts daran.

Gruß

Henning

Deswegen gibt es ja auch PHP: strftime - Manual
Michael

Hallo Michael,

darüber bin ich gerade auch gestolpert und auf dem RP habe ich nun auch deutsche Meldungen.

Nur Klaus hat selbst mit strftime englische Meldungen und keine Lösungen dazu.

Ich brauche kein Korrektur-Script mehr. Aber diese Variante ist eleganter:

$english = array(
'Monday'    => 'Montag',
'Tuesday'   => 'Dienstag',
'Wednesday' => 'Mittwoch',
'Thursday'  => 'Donnerstag',
'Friday'    => 'Freitag',
'Saturday'  => 'Samstag',
'Sunday'    => 'Sonntag',
'Mon'       => 'Mo',
'Tue'       => 'Di',
'Wed'       => 'Mi',
'Thu'       => 'Do',
'Fri'       => 'Fr',
'Sat'       => 'Sa',
'Sun'       => 'So',
'January'   => 'Januar',
'February'  => 'Februar',
'March'     => 'März',
'May'       => 'Mai',
'June'      => 'Juni',
'July'      => 'Juli',
'October'   => 'Oktober',
'December'  => 'Dezember'
);


$datum = "Sun Sunday 2. December 2018"; 
$datum  = strtr($datum, $english);

echo ($datum);

Gruß

Henning

Hatte gerade das selbe Problem.

Locale ware bereits auf de_DE. Lösung war bei mir das Umstellen der locale auf de_DE.UTF-8 - vorher hatte ich die de_DE.ISO

Bei mir gehts jetzt.

Eventuell auch bei euch einen Versuch wert :slight_smile:

VG
Michael

Ich habe in der 6er Version (unter Windows) ebenfalls diese Meldung - würde aber gerne testweise diese aktivieren, wie kann ich dies aktivieren?!?

Welche Meldung meinst du?
Und welche Meldung würdest du gerne testweise aktivieren?
Michael

Wollte testweise das setlocale() - wieder aktivieren, habe aber zum einfachen testen einfach mal einen weiteren Apache installiert um etwas zu testen.