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
Und auch wenn ich Sie manuell dort hin kopiere ignoriert es sie
Wichtig ist, dass die __autoinclude im /usr/share/symcon/scripts liegt. Nur von dort wird sie geladen
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
Dreckfuhler ?
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
Du darfst die aber erstellen. Und dann lädt IPS die
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
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
Michael
Danke Michael, das Du es wenigsten probiert hast
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
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
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!!!