Autoinclude gibt es das noch?

Wie kann man ein Script autoinclude ? Früher gab es die __autoinclude.inc.php aber wie macht man das jetzt ?

nano /etc/symcon/scripts/__autoinclude.inc.php

Danke aber siehe :

scripts/* (Dateien, welche mit Unterstichen anfangen (__), bitte nicht kopieren!)

also ist die original nicht auf dem PI :frowning:

Und auch wenn ich Sie manuell dort hin kopiere ignoriert es sie :frowning:

Wichtig ist, dass die __autoinclude im /usr/share/symcon/scripts liegt. Nur von dort wird sie geladen :slight_smile:

paresy

Soll wirklich die __autoinclude.inc.php in /usr/share/symcon/scripts liegen?

Denn bei meiner Installation auf dem Raspberry (Version 210) liegt sie unter /etc/symcon/scripts:

pi@home-control ~ $ ls -la /etc/symcon/scripts/
insgesamt 316
drwxrwxr-x 2 1002 1002   4096 Jul 11 22:58 .
drwxrwxr-x 6 1002 1002   4096 Jul 11 22:58 ..
-rw-r--r-- 1 root root   1312 Jul  9 12:17 __autoinclude.inc.php
-rw-r--r-- 1 root root 111511 Jul  9 12:17 __compatibility.inc.php
-rw-r--r-- 1 root root   1838 Jul  9 12:17 __extensions.inc.php
-rw-r--r-- 1 root root   8570 Jul  9 12:17 __ipsmodule.inc.php
-rw-r--r-- 1 root root   6958 Jul  9 12:17 __mail.inc.php
-rw-r--r-- 1 root root   4490 Jul  9 12:17 __rpc.inc.php
-rw-r--r-- 1 root root 160512 Jul  9 12:17 __smtp.inc.php

Genauso steht es auch im Package:

pi@home-control ~ $ dpkg -L symcon
...
/etc/symcon/scripts
/etc/symcon/scripts/__autoinclude.inc.php
/etc/symcon/scripts/__compatibility.inc.php
/etc/symcon/scripts/__rpc.inc.php
/etc/symcon/scripts/__mail.inc.php
/etc/symcon/scripts/__smtp.inc.php
/etc/symcon/scripts/__extensions.inc.php
/etc/symcon/scripts/__ipsmodule.inc.php
...

Mir scheint, das könnte der Grund sein, warum die __autoload.php in /usr/share/symcon/scripts/ nicht mehr ausgeführt wird, da sie von der __autoinclude.inc.php eingebunden wird.

Hi leider stimmt das nicht, sie wird nur geladen wenn die Datei unter /etc/sysmcon/scripts liegt :rolleyes:

Danke für den Tip, jetzt klappt es :wink:

Dreckfuhler ?:smiley:

So nach einem Update wird die __autoinclude immer überschrieben !!!

Warum ?

Ah! Jetzt sehe ich erst den Fehler. Die autoinclude.inc.php gehört zu IPS und wird von uns verwaltet. Deine eigene Include Datei ist die /usr/share/symcon/scripts/__autoload.php. Dort kannst du machen was du willst, ohne dass wir es überschreiben. Sorry… War mir vorher nicht aufgefallen :rolleyes:

paresy

Ah ok also in die __autoload.php kann include Scripte eintragen :eek:

Aber die Datei habe ich nicht :frowning:

Du darfst die aber erstellen. Und dann lädt IPS die :slight_smile:

paresy

Was muss da genau drin stehen ?

Reicht das ?

if(file_exists(IPS_GetKernelDir()."/scripts/40150.ips.php")) 
	require_once(IPS_GetKernelDir()."/scripts/40150.ips.php");

Ja. Und die <? nicht vergessen :slight_smile:

paresy

Wenn du es SO baust, dann nimm doch include statt require, deine Abfrage macht quasi den Unterschied aus…

ich habe versucht
include(IPS_GetScriptFile(16092 /[Konfiguration\Include_Funktion]/));

durch die __autoload.inc.php im Verzeichnis /usr/share/symcon/scripts zu ersetzen

<?

if(file_exists(IPS_GetKernelDir()."/scripts/16092.ips.php")) 
    include_once(IPS_GetKernelDir()."/scripts/16092.ips.php");  

?>

Leider funktioniert das nicht?
Mache ich was falsch, oder ist das noch nicht implementiert?

LG
Andreas

Also auch nach dreimal lesen… ich weiß nicht was du uns sagen willst.
Bei mir kommt an:
Du hast ‚Code‘ durch ‚Datei‘ ersetzt.

Verstehe ich nicht, sorry :confused:

Michael

Danke Michael, das Du es wenigsten probiert hast :wink:

Ich habe derzeit in vielen php Dateien per include Funktionen und Definitionen eingebunden. Um mir das zu erparen, dachte ich die __autoload funktion würde das übernehmen.

Also ja, ich habe eine Befehlszeile einer php-Datei versucht durch eine Eintrag in der __autoload zu ersetzen. Tut aber nicht.

Verstehst Du mich jetzt?

LG
Andreas

Also bei mir funktioniert es.

Ich glaube da ist ein / zuviel, oder ?


if(file_exists(IPS_GetKernelDir()."scripts/16092.ips.php")) 
    include_once(IPS_GetKernelDir()."scripts/16092.ips.php");   


echo IPS_GetKernelDir();
# Ausgabe laut Doku: /usr/share/symcon/

Wobei das unter Windows egal zu sein scheint (unter Ubuntu kann ich gerade nicht auf die schnelle testen)

Verstehe dann aber auch nicht warum Paresy das auch mit dem extra / in der __autoinclude.inc.php macht :confused:

Deren eigene Doku sagt ja was anderes aus:
IPS_GetKernelDir — IP-Symcon :: Automatisierungssoftware

Edit: Gerade noch mal unter der 3er nachgesehen; dort hatte ich das schon immer ohne / bzw. \ vor ‚scripts‘ gemacht und mir dann gleich die Konstante ‚DIRECTORY_SEPARATOR‘ geschnappt:


require_once(IPS_GetKernelDir()."scripts".DIRECTORY_SEPARATOR.IPS_GetScriptFile(58849));

Edit 2:
So doch noch mal die VM gestartet… da geht es auch.
Egal ob da ein Slash zuviel ist oder nicht :smiley:

Also muss bei dir was ‚anderes‘ faul sein.
Michael

… glaub es oder nicht - das „/“ war die Ursache, wenigsten auf der RPi Installation bei mir.

Danke Michael!!!