IP Symcon 6.0 set_time_limit()

Hallo zusammen

seit der Installation von 6.0 bekomme ich sehr häufig folgende Warnung für verschiedene Scripte
Beispiel:

05.07.2021, 08:01:00 | ScriptEngine | Result for Event 29937

Warning: set_time_limit() has been disabled for security reasons in /var/lib/symcon/scripts/52838.ips.php on line 30

Was ist da zu tun?

Gruß Dirk

Ausbauen :smiley: set_time_limit ist nicht mehr vorhanden zur Nutzung.
Siehe auch IP-Symcon 6.0 (Testing) - #268 von paresy

Neu: set_time_limit darf seit der 6.0 nicht mehr aufgerufen werden. Einige PHP-Module und Skript müssen angepasst werden, sodass diese die Funktion nur auf Versionen kleiner 6.0 aufgerufen wird.

Danke, das hatte ich überlesen, weil ich die Funktion noch nie verwendet hatte, sie sind in übernommenen Skripten vorhanden.

Du kannst die Funktion bedenkenlos einfach rausnehmen. Wir haben das time limit zur 6.0 komplett deaktiviert, sodass es keine Probleme machen sollte (normalerweise wollten Skripte das Limit anheben)

paresy

1 „Gefällt mir“

Hallo,
ich bekomme diese Fehlermeldung regelmäßig meist nachts aus dem IPSModulManager.class.php in line 129. Ich bin auf Version 6.0 vom 28.08.2021.

Grüße Frank

Du müsstest diese Funktion einfach in der Datei auskommentieren.

paresy

Kann ich denn stattdessen irgendwo meine execution_time einstellen? Ich habe einige Skripte, die laufen gewollt über 60s. Diese brechen nun regelmäßig ab und bringen mein System in einen undefinierten Zustand.

Warum genau wird diese Funktion denn eigentlich blockiert bzw. was sind hier die Sicherheitsrisiken?

Viele Grüße,
bition

Scripte werden nicht mehr, nach Zeit X, abgebrochen.
Deswegen ist diese Funktion ja deaktiviert worden.
Michael

Ich erhalte aber ziemlich genau nach 60s folgende Fehlerausgabe im Log und die Skripte werden tatsächlich hart abgebrochen.

Habe ich noch irgendwas übersehen?

Meine aktuelle Symcon-Version ist: IP-Symcon 6.2, Windows (amd64), 06.07.2022, 39a5fb068a17

Viele Grüße,
Eric

Ich kann mir nur vorstellen dass du irgendwie die Zeit auf 60 Sekunden gestellt hast. D.h. Irgendwie muss es noch eine Lücke geben. Wir setzen die Zeit hart auf 0. Also auf kein Limit.

Magst du mal schauen was in deiner php.ini steht?

paresy

Anbei einmal der Auszug auf meinem phpinfo()
php.ini.html.7z (10,4 KB)

Hier ist tatsächlich die max_execution_time auf 60 gestellt

Ich habe die Stelle auch tatsächlich gefunden, wo ich den Wert bei mir wohl lokal anpasse :innocent:. Dies ist ein include, welche ich vor jeder Skriptausführung lade, damit meine php-Struktur entsprechend erkannt wird.
image

D.h. wiederum, dass ich mit init_set() die blockierte Funktion überschreiben kann.

Viele Grüße,
Eric

Stimmt. Das ist leider noch eine Lücke unter Windows die wir aufgrund der Distribution von PHP nicht lösen können. Unter Linux ist ini_set für den Parameter auch gesperrt.

Ich empfehle das ini_set zu entfernen wenn du keinen sporadischen, unerklärlichen Abstürze haben möchtest.

paresy

1 „Gefällt mir“