Viele Fehlermeldungen nach neuesten Updates

Da ist im Patami Framework ein neuer Fehler hinzugekommen:

15.10.2023 11:47:40 | 00000 | ERROR   | PHPLibrary           | Registriere Funktion... Reflection parse error: <br />
<b>Deprecated</b>:  Using ${var} in strings is deprecated, use {$var} instead in <b>C:\ProgramData\Symcon\modules\ipspatami\Framework\module.php</b> on line <b>973</b><br />
{"isStrict":false}

Die Lösung steht gleich dabei :slight_smile:

Zurück zur autoload:

wie sieht es hier aus?

<?php
// Patami Framework
// The next four lines are auto-generated, don't touch them!
$fileName = 'C:\ProgramData\Symcon\modules\ipspatami\bootstrap.php';
if (file_exists($fileName)) {
	@require_once($fileName);
}
// Patami Framework
// The next four lines are auto-generated, don't touch them!
$fileName = 'C:\IP-Symcon\modules\ipspatami\bootstrap.php';
if (file_exists($fileName)) {
	@require_once($fileName);
}
include_once IPS_GetKernelDir()."scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php";
IPSUtils_Include("IPSLogger_PhpErrorHandler.inc.php", "IPSLibrary::app::core::IPSLogger");
?>

Dann kommt auch kein Fehler…

Blockzitat
15.10.2023 11:47:40 | 00000 | ERROR | PHPLibrary | Registriere Funktion… Reflection parse error:

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in C:\ProgramData\Symcon\modules\ipspatami\Framework\module.php on line 973

{„isStrict“:false}

Das checke ich nicht hier steht bei module.php auf dieser Zeile:

Wo muss ich da was ändern :slight_smile:

Dann kommentiere in autoload.ini mal die Zeile 5 aus:

	//@require_once($fileName);

und starte den Dienst neu.

Was steht denn überhaupt in der ‚C:\ProgramData\Symcon\modules\ipspatami\bootstrap.php‘?

Da muss das $ Zeichen in die geschweifte Klammern, also {$fileName}

Was steht denn überhaupt in der ‚C:\ProgramData\Symcon\modules\ipspatami\bootstrap.php‘?

<?php
/**
 * Patami IPS Framework
 *
 * @package IPSPATAMI
 * @version 3.4
 * @link https://bitbucket.org/patami/ipspatami
 *
 * @author Florian Wiethoff <florian.wiethoff@patami.com>
 * @copyright 2017 Florian Wiethoff
 *
 * @license GPL
 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
 * version.
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * By intentionally submitting any modifications, corrections or derivatives to this work, or any other work intended
 * for use with this Software, to the author, you confirm that you are the copyright holder for those contributions and
 * you grant the author a nonexclusive, worldwide, irrevocable, royalty-free, perpetual, license to use, copy, create
 * derivative works based on those contributions, and sublicense and distribute those contributions and any derivatives
 * thereof.
 */


/**
 * Initializes the PHP autoloader and the Patami framework and registers IPS object drivers.
 */

// Load IPS defines
@require_once(__DIR__ . '/ipsdefines.php');

// Initialize the auto loader
@require_once(__DIR__ . '/Patami/AutoLoader.php');
\Patami\AutoLoader::Register(__DIR__);

// Bootstrap the framework
\Patami\IPS\Framework::Bootstrap();

// Add the drivers
\Patami\IPS\Objects\Drivers\Drivers::AddDriverClassNames(array(
    'Patami\\IPS\\Objects\\Drivers\\Generic\\SwitchVariableDriver',
    'Patami\\IPS\\Objects\\Drivers\\Generic\\VariableNumberDriver',
    'Patami\\IPS\\Objects\\Drivers\\Generic\\TemperatureVariableDriver',
    'Patami\\IPS\\Objects\\Drivers\\Generic\\ScriptSetSwitchDriver',
    'Patami\\IPS\\Objects\\Drivers\\KNX\\KNXSwitchDriver',
    'Patami\\IPS\\Objects\\Drivers\\KNX\\KNXDimmerDriver',
    'Patami\\IPS\\Objects\\Drivers\\KNX\\KNXGetTemperatureDriver',
    'Patami\\IPS\\Objects\\Drivers\\KNX\\KNXFloatValueDriver',
    'Patami\\IPS\\Objects\\Drivers\\HomeMatic\\HomeMaticSwitchDriver',
    'Patami\\IPS\\Objects\\Drivers\\HomeMatic\\HomeMaticDimmerDriver',
    'Patami\\IPS\\Objects\\Drivers\\Philips\\Hue\\PhilipsHueColorDriver',
    'Patami\\IPS\\Objects\\Drivers\\Philips\\Hue\\PhilipsHueColorTemperatureDriver',
    'Patami\\IPS\\Objects\\Drivers\\Patami\\ObjectGroup\\PatamiObjectGroupStatusDriver',
    'Patami\\IPS\\Objects\\Drivers\\Patami\\ObjectGroup\\PatamiObjectGroupSceneSwitchDriver',
    'Patami\\IPS\\Objects\\Drivers\\Patami\\ObjectGroup\\PatamiObjectGroupSceneDriver',
    'Patami\\IPS\\Objects\\Drivers\\Patami\\SplitRGB\\PatamiSplitRGBDriver',
));

Dann kommentiere in autoload.ini mal die Zeile 5 aus:

	//@require_once($fileName);

und starte den Dienst neu.

Wir sofort wieder neu erstellt im Autoload, das bringt nichts

Ok, da komme ich nicht weiter, da ich das Framework nicht verstehe.

Verfolgen wir die Spur des DEPRICATED.

Die Fehlermeldung kommt erst in der neuen Version, obwohl der Schalter „CompatibilityDeprication“ ausgeschaltet ist.

Probiere mal das Skript

<?php
$var = 1;
echo "'${var}'";
echo utf8_encode('abc');
var_dump(error_reporting());

da sollten keine Meldungen kommen

Oder irgendein Modul von ihm welches auf globaler Ebene aktiv ist verändert das error reporting.

paresy

Genau. Ich habe das Testskript noch ergänzt.

Du kannst auch schon mal in allen Skripten nach „set_error_handler“ suchen.

Das hatten wir zumindest schon Mal bei jemandem im Discord festgestellt. Weiß aber nicht mehr ob es die Lösung des Problems war.
Michael

@bumaas: Wenn ich dein Script ausführe kommt folgende Fehlermeldung:

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in C:\ProgramData\Symcon\scripts\33238.ips.php on line 3
‚1‘
Deprecated: Function utf8_encode() is deprecated in C:\ProgramData\Symcon\scripts\33238.ips.php on line 4
abcint(32767)

Habe ich so erwartet. Der Error Handler ist verstellt (32767 statt 24575).

Eigentlich kann das nicht an der IPS Version liegen. Aber schauen wir weiter.

insbesondere in ‚IPSLogger_PhpErrorHandler.inc.php‘

Muss ich hier welche abändern?

Mich wundert ja, dass so viele verschiedene Fehler kommen?
Wie wenn er überall Dateien nicht finden würde…

Ok. Also das patami Framework ist nicht dabei.

Die Files unter \backup und \deleted können wir ignorieren. Ebenso die IPSLogger_PhpErrorHandler.inc.php: dort ist der Eintrag korrekt.

Bleiben nur zwei Module übrig:

Beide kenne ich leider nicht. Könntest du beide Module einmal deinstallieren?

Und dann den Service neu starten und das Testskript wieder ausführen.

Das vertagen wir erst einmal. Vielleicht ist es ein Folgeproblem vom DEPRICATED.

Beide gelöscht, Fehler kommt weiterhin

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in C:\ProgramData\Symcon\scripts\33238.ips.php on line 3
‚1‘
Deprecated: Function utf8_encode() is deprecated in C:\ProgramData\Symcon\scripts\33238.ips.php on line 4
abcint(32767)

Dann such auch nach error_reporting damit wird das auch verändert.
Michael

Hier:

Ohne mir das jetzt im Detail angesehen zu haben. Wieso haltet ihr euch so an den deprecated Meldungen fest? Das sind doch nur Infos, dass es bald nicht mehr gehen wird. Nicht, dass es schon defekt ist.

Die Meldungen sind mir eher egal, das Problem ist, dass hier auch die Module selbst nicht mehr funktionieren. Module was eigentlich keine Fehler bringen melden das sie irgendwelche Funktionen nicht mehr aufrufen können.

Wobei ich ja „nur“ auf eine neuere Testing Version wechsle, komisch ist auch, dass es Fehler in System32 anzeigt

So sollte es sein, aber hier werden aus Deprecated Meldungen Error Meldungen gemacht. Und dann sind die Abläufe anders.

@Nall-chan: Danke für den Hinweis!

Damit gibt es nun neue Verdächtige:

image

image

Wird davon ein Skript beim und kurz nach dem Systemstart ausgeführt?

Ich vermute aber, dass es das noch nicht ist. Wir sollten das patami Framework erst einmal ausschließen. Ich habe es mir unter Bitbucket einmal angesehen.

Es ist ein absoluter Klopper, der potenziell tief in die Abläufe von IPS eingreift.

Um das Framework als Verursacher ausschließen zu können, benenne doch bitte einmal das patami Verzeichnis unter scripts um. Das ist vermutlich der einfachste Weg, es zu deaktivieren.

Was sagt dann das Testscript nach einem Neustart?