Bei Ausführen der Befehle in einem Script kommt keine Fehlermeldung.
Habe jetzt erst mal die Library deinstalliert und werde sie versuchen später wieder zu installieren.
Danke bumas für die Feedbacks hier. Hat mir im Verständnis sehr weiter geholfen
Hallo,
bei mir wurde auf dem Raspberry Pi gerade das Update auf 8.0 Installiert. (von vermutlich 7.2, )
seit dem geht die IPSLibrary nicht mehr. Diese lief bisher problemlos.
Fatal error: Uncaught Error: Call to undefined function IPSUtils_Include()
meine __autoload.php sieht wie folgt aus:
<?
include_once IPS_GetKernelDir()."scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php";
IPSUtils_Include("IPSLogger_PhpErrorHandler.inc.php", "IPSLibrary::app::core::IPSLogger");
?>
bitte um Hilfe, wo hier der Fehler liegt und wie ich diesen beheben kann.
vielen Dank.
liebe Grüße
Wolfgang
Klar, ich verschiebe es zu passenden Thema wo das Problem schon zu 7.0 behoben wurde.
Siehe erster Beitrag.
Michael
Hallo, mit der Version 7.2 (letztes Update ca. 22. Oktober 2024) hat das bei mir funktioniert.
erst das aktuelle Update auf 8.0 macht den Fehler!
lg
Wolfgang
Hallo,
hab wieder die Version 7.2 zurückgesichert.
jetzt geht wieder alles. alle Änderungen laut dem 1. Post in diesem Forum waren bereits vorhanden.
d.h. es dürfte noch ein Problem mit der IPS Library mit dem Update auf 8.0 geben.
ich warte da vorerst mal ab mit dem Update.
lg
Wolfgang
Kann ich nicht bestätigen, bei mir läuft die Library auch nach dem Update auf 8.0 reibungslos.
Wenn die IPSUtils_Include nicht gefunden wird, obwohl die Datei in der __autoload.php inkludiert wird, dann kann es nur bedeuten, dass der Aufruf nicht ausgeführt wurde.
Wie sieht denn deine php.ini aus?
Gibt es keine Fehlermeldung im Logfile beim Starten?
Hallo,
hier die PHP.INI:
MTP§watchdog§1584307792<]]></message></event>=
<event logger="\"MqttHandler\" timestamp=\"2023-01-15T17:28:13.000000+01:00\" level=\"DEBUG\" domain=\"IPS.exe\" thread=\"15\" username=\"IPS\"><message><![CDATA[Publish Mqtt Command:>-<]]></message></event>"
<event logger=
[PHP]
error_reporting=E_ALL^E_DEPRECATED
html_errors=0
memory_limit=32M
short_open_tag=1
max_execution_time=0
user_agent="IP-Symcon/8.0 Revision/a7ebf5a4 Platform/Raspberry Pi"
disable_functions="setlocale, set_time_limit"
auto_prepend_file="/usr/share/symcon/scripts/__autoinclude.inc.php"
include_path=".:/var/lib/symcon/scripts"
curl.cainfo="/usr/share/symcon/cacert.pem"
openssl.cafile="/usr/share/symcon/cacert.pem"
ips.output_buffer=1048576
zend_extension="opcache.so"
extension_dir="/usr/share/symcon/ext"
[Session]
session.save_handler=files
session.save_path="/var/lib/symcon/session"
session.auto_start=0
session.name=pt
[DATE]
date.timezone="Europe/Vienna"
[opcache]
opcache.revalidate_freq=0
der einzige Unterschied der 7.2 ist:
user_agent="IP-Symcon/7.2 Revision/27409253 Platform/Raspberry Pi"
dies schaut für mich OK aus.
Meine Symcon-Version + Module + IPS Library war mit ca. Herbst 2024 aktuell auf 7.2 und lief ohne Probleme auf einem Raspberry Pi.
das Update gestern auf 8.0 hat dann diese Fehler ausgelöst.
die Ursache dürfte die Zeile im Log:
Function utf8_decode() is deprecated
sein.
Ich habe aber leider keine Idee, wie das zu beheben ist.
lg
Wolfgang
PS: hier einige Ausschnitte aus dem Log:
.....
2025-01-29 13:40:12 | 00000 | MESSAGE | SyncRemoteService | Erstelle...
2025-01-29 13:40:12 | 00000 | DEBUG | ScriptEngine | Skriptausführung (Text) - Länge: 26 ~ Absender: RunScript
2025-01-29 13:40:12 | 00000 | MESSAGE | ScriptEngine | Pretest for loading __autoload.php failed. __autoload.php will be disabled. Error:
<br />
<b>Deprecated</b>: Function utf8_decode() is deprecated in <b>/-</b> on line <b>1</b><br />
2025-01-29 13:40:12 | 00000 | MESSAGE | ModuleLoader | Lade Bibliotheken...
2025-01-29 13:40:12 | 00000 | MESSAGE | ActionPool | Lade Aktionen...
..........
2025-01-29 13:40:13 | 00000 | DEBUG | ScriptEngine | Skriptausführung (Text) - Länge: 184 ~ Absender: RunScript
2025-01-29 13:40:13 | 00000 | ERROR | PHPLibrary | Registriere Funktion... Reflection parse error: <br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>243</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>243</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>246</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>246</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>251</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>251</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>256</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>256</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>264</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>264</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>268</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>268</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>268</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>270</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>270</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>272</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>272</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>275</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>275</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>275</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>288</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>288</b><br />
<br />
<b>Deprecated</b>: Using ${var} in strings is deprecated, use {$var} instead in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>288</b><br />
<br />
<b>Deprecated</b>: Return type of PhpXmlRpc\Value::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>466</b><br />
<br />
<b>Deprecated</b>: Return type of PhpXmlRpc\Value::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>485</b><br />
<br />
<b>Deprecated</b>: Return type of PhpXmlRpc\Value::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>539</b><br />
<br />
<b>Deprecated</b>: Return type of PhpXmlRpc\Value::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>569</b><br />
<br />
<b>Deprecated</b>: Return type of PhpXmlRpc\Value::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>499</b><br />
<br />
<b>Deprecated</b>: Return type of PhpXmlRpc\Value::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in <b>/var/lib/symcon/modules/.store/bumaas.1/libs/phpxmlrpc-4.3.0/src/Value.php</b> on line <b>553</b><br />
{"isStrict":false}
2025-01-29 13:40:13 | 00000 | MESSAGE | ActionPool | Lade Aktionen...
2025-01-29 13:40:13 | 00000 | MESSAGE | PresentationPool | Lade Presentationen...
....
Hallo,
das scheint meiner Meinung nach kein Fehler der IPS Library zu sein. bitte die letzten paar Einträge in das entsprechende Thema verschieben.
vielen Dank.
lg
Wolfgang
Da der Fehler beim laden der __autoload.php kommt, wo bei dir nur die IPSLibrary geladen wird, wird es wohl daran liegen.
Vermutlich wird dort irgendwo das error_reporting falsche gesetzt.
Könnte mir vorstellen da irgendwo ein Update.
Merkwürdig aber das es vorher nie auffiel.
Michael
Check doch nochmal diese Stellen.
In der Tat. Aber vielleicht ist der „Pretest“ hinzugekommen.
Hallo,
ich vermute den Fehler bei dem utf8_decode. ich weiss aber nicht, wo das aufgerufen wird.
hier die IPSLogger_PhpErrorHandler Datei (umbenannt auf .txt zum Hochladen)
die Datei sollte die Änderungen alle drinnen haben.
IPSLogger_PhpErrorHandler.txt (4,3 KB)
lg
Wolfgang
utf8_decode ist nur der Überbringer der Nachricht, nicht die Ursache.
Ursache ist, dass bei dir nicht der richtige Errorhandler aktiv ist. Der richtige ignoriert nämlich E_DEPRECATED.
Probier mal folgendes Skript
<?php
// Temporären Error-Handler setzen, um den aktuellen Handler zu erhalten
$current_error_handler = set_error_handler(function () {});
// Error-Handler zurücksetzen
restore_error_handler();
var_dump($current_error_handler);
Ich erhalte:
string(25) "IPSLogger_PhpErrorHandler"
Das ist nur ein Copy&Paste Fehler, oder? Die php.ini beginnt eigentlich mit „[PHP]“
was steht denn in der Datei?
Hallo,
ich bin jetzt wieder auf 7.2.
da liefert das Script den gleichen Output wie bei dir.
ich werde das Update auf 8.0 am Nachmittag nochmals versuchen und dann das Script ausführen.
die PHP.INI schaut am Anfang bei mir wirklich so aus:
MTP§watchdog§1584307792<]]></message></event>=
<event logger="\"MqttHandler\" timestamp=\"2023-01-15T17:28:13.000000+01:00\" level=\"DEBUG\" domain=\"IPS.exe\" thread=\"15\" username=\"IPS\"><message><![CDATA[Publish Mqtt Command:>-<]]></message></event>"
<event logger=
[PHP]
ich hab keine Ahnung, was das sein soll. Ich hab den Symcon MQTT Server laufen. Ist vermutlich damit eingetragen worden. Ich hab bei der PHP.INI selber keine Änderungen am Standard gemacht.
lg
Wolfgang
Hier die Datei __autoinclude.inc.php (vom 8.0 Update)
<?php
//Currently we do not support injection of arrays into PHP
//Unwrap colon seperated values for backwards compatibility
if(isset($_IPS['SENDER']) && ($_IPS['SENDER'] === "HeatingControl")) {
if(isset($_IPS['INSTANCES'])) {
$_IPS['INSTANCES'] = explode(",", $_IPS['INSTANCES']);
foreach($_IPS['INSTANCES'] as $key => $value)
$_IPS['INSTANCES'][$key] = intval($value);
}
if(isset($_IPS['INVERTS'])) {
$_IPS['INVERTS'] = explode(",", $_IPS['INVERTS']);
foreach($_IPS['INVERTS'] as $key => $value)
$_IPS['INVERTS'][$key] = ($value == "true");
}
}
//Add compatibility function for Connect Control
if (!function_exists('CC_GetURL')) {
function CC_GetURL($InstanceID) {
return CC_GetConnectURL($InstanceID);
}
}
//Working directory for events with scriptText is not set internally
//We need to work around the issue that PHP does not expose any internal API for changing this
if($_IPS['SELF'] == 0 && !isset($_SERVER['PHP_SELF']))
chdir(IPS_GetKernelDirEx() . "scripts");
if(file_exists(IPS_GetKernelDirEx() . "scripts/__rpc.inc.php"))
require_once(IPS_GetKernelDirEx() . "scripts/__rpc.inc.php");
if(IPS_GetOption("CompatibilityRequired") != 0)
if(file_exists(IPS_GetKernelDirEx() . "scripts/__compatibility.inc.php"))
require_once(IPS_GetKernelDirEx() . "scripts/__compatibility.inc.php");
if(file_exists(IPS_GetKernelDirEx() . "scripts/__deprecated.inc.php"))
require_once(IPS_GetKernelDirEx() . "scripts/__deprecated.inc.php");
if(file_exists(IPS_GetKernelDir() . "scripts/__generated.inc.php"))
require_once(IPS_GetKernelDir() . "scripts/__generated.inc.php");
if (!isset($_IPS["AUTOLOAD"]) || $_IPS["AUTOLOAD"])
if(file_exists(IPS_GetKernelDir() . "scripts/__autoload.php"))
require_once(IPS_GetKernelDir() . "scripts/__autoload.php");
?>
Ich auch nicht Aber das gehört da nicht hin. Da scheint mal irgendwann etwas beim Schreiben schiefgelaufen zu sein. Das sollte raus.
Mein Erklärungsansatz wäre, dass die aktuelle PHP Version bei der PHP.ini nun sensibler ist und die Einstellungen nicht auswertet, insbesondere nicht
error_reporting=E_ALL^E_DEPRECATED
Damit schlägt dann der „Pretest“ fehl und die __autoinclude wird nicht eingebunden.
Was liefert das Skript bei dir unter 7.2?
Dienst beendet, Datei löschen und Dienst bei starten.
Dann sollte die Datei sauber neu erstellt werden.
Michael
das Script den gleichen Output wie bei dir:
string(25) "IPSLogger_PhpErrorHandler"
ich hab die PHP.ini unter 7.2 mal bereinigt. werde das wie gesagt am Nachmittag unter 8.0 nochmals probieren.
lg
Wolfgang
Hallo,
ich hab jetzt nach dem neuerlichen Update auf 8.0 die PHP.ini gelöscht. jetzt läuft wieder alles.
vielen Dank für Eure Hilfe.
lg
Wolfgang