__autoload.php

Ich richte gerade ein System auf einem Pi5 ein. Jetzt habe ich im Ordner /var/lib/symcon/scripts eine Date __autoload.php angelegt wie auf meinem Windows system.

In dieser Datei include ich eine Datei mit Konstanten damit diese bei Start sofort zur Verfügung stehen. ( /var/lib/symcon/scripts/__autoload.php )
in der Datei steht folgendes
include(„/var/lib/symcon/scripts/22951.ips.php“);

in der Datei 22951.ips.php sind die Konstanten definiert.

Funktioniert auf meinem Windows System einwandfrei. auf dem Pi wird die __autoload.php nicht geladen. Kann jemand helfen?

Was steht den in Deiner php.ini drin?

auto_prepend_file ???

/usr/share/symcon/scripts/__autoinclude.inc.php

In dieser Date ist dann der Verweis auf die __autoload.php wenn $_IPS[„AUTOLOAD“] gesetzt ist. Wo man das setzt weiss ich nicht.

in Log mein er das die Zeile falsch ist:

include ('var/lib/symcon/scripts/22951.ips.php');
das hab ich auch probiert.
include ('/var/lib/symcon/scripts/22951.ips.php');

und deshalb autoload deaktiviert ist.
Hier der Logeintrag
03/23/25 15:42:06 | 00000 | MESSAGE | ScriptEngine | Pretest for loading __autoload.php failed. __autoload.php will be disabled. Error:
include (‚/var/lib/symcon/scripts/22951.ips.php‘);

Die Meldung kommt wenn deine autoload Datei einen Fehler beinhaltet. Da autoload kritisch ist, testen wir vorher dass das Skript fehlerfrei läuft. Ansonsten wird es verworfen.

paresy

@paresy Das ist das Problem. In IPS funktioniert das Script ohne Fehler.

include ('/var/lib/symcon/scripts/22951.ips.php');

Ich definiere Konstanten über die __autoload.php. In diese include ich ein IPS Script mit der Konstantendefinition.

const CONST_GENERALLY_ID_ARCHIVHANDLER = 12345;
const CONST_GENERALLY_ID_PARTYMODE = 54321;


Versuch es doch mal auf dem Pi per Hand zu Inkluden. Geht das ohne Fehler?

paresy

@paresy

helmundkram@pi:/var/lib/symcon/scripts $ php __autoload.php
include („/var/lib/symcon/scripts/22951.ips.php“);

…ohne Fehler in der Konsole.

Aber ist das nicht ein anderer Pfad als Du oben geschrieben hast?!

Ist doch /usr/… und du hast /var/… geschrieben

Aufpassen! Das eine ist die __autoload und das andere die __autoinclude.
Erstere kann man selber erstellen und gehört in der Verzeichnis wo eigene Scripte liegen.
Letzteres ist Bestandteil von Symcon und beim Programm.
Die Doku enthält auch ein Beispiel dafür.
Aber außer das bei @zman0801 ein statischer Pfad zu /var/lib/symcon und in der Doku es mit IPS_GetKernelDir gezeigt wird, sehe ich keinen Grund warum es nicht funktionieren sollte.
Zumal das einzubindende Script ja ohne Fehler in der Konsole ausgeführt wird.
Michael

@pitti @Nall-chan Ich habe die Datei __autoload.php in /var/lib/symcon/scripts/ erstellt und einen include Befehl auf die scriptdatei im gleichen Verzeichnis eingefügt. Im log kommt aber ein Fehler so das __autoload.php nicht ausgeführt wird. Ich weiss nicht weiter. Auf meinem Windows system funktioniert diese Vorgehensweise.

Mein Beitrag bezog sich auf Pitts.
Ich schreib ja schon das ich keinen Grund sehe warum es nicht funktionieren sollte.
Michael

Fehlt in der Datei ein <?php am Anfang?

paresy

Das Fragezeichen hat gefehlt. :slight_smile: …oh Gott ist das peinlich. Die Frage ist warum es keine Fehler in der Kommandozeile gegeben hat.

Danke!