ich beginne gerade mit meinen ersten Gehversuche unter 4.0 (unter Windows).
Nach der erfolgreichen Installation und Konvertierung bekomme ich (unter anderem) nun Fehlermeldungen der Art:
Compile Error: Unknown: Failed opening required 'C:\IP-Symcon\scripts/Fensterstatus prüfen.ips.php' (include_path='.;C:\php\pear')
Error in Script Unknown on Line 0
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
55 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
in IPSLogger_PhpFatalErrorHandler
Es sieht so aus, als ob es Probleme mit den Umlauten (hier: ‚prüfen‘) in Dateinamen gibt. Auch aus der Konsole kann ich das Script nicht aufrufen. Hier kommt die Fehlermeldung: „Datei #C:\IP-Symcon\scripts/Fensterstatus prüfen.ips.php existiert nicht“. Dürfen Dateinamen keine Umlaute mehr enthalten, oder ist es noch ein Bug?
Wie könnte ich denn den Dateinamen konsistent ändern? Gibt es da einen Trick?
Also grundsätzlich sind Umlaute in so einem Umfeld nie eine schlaue Idee
Umlaute immer umschreiben nach diesem Schema:
ü = ue
ä = ae
ö = oe
ß = ss
Mal davon abgesehen hat IPS4 noch so einige Baustellen bzgl. einheitlicher Verarbeitung von Umlauten :rolleyes: Ich habe da auch schon Stunden geflucht in Skripten. Teilweise werden innerhalb einer Funktion Werte als UTF8 gelesen, dann als ASCII verarbeitet und dann wieder als UTF8 zurückgegeben…total Banane… Hab die Arbeiten an dieser Stelle eingestellt und warte auf einheitliches UTF8
Aber für deinen Fall wird es ausreichen > einfach die Umlaute ändern wie beschrieben.
Aber an einigen Stellen habe ich mich nicht daran gehalten (war ja auch nicht notwendig). Ich vermute daher, dass das Thema noch mit zu den Baustellen gehört.
Wie kann ich jetzt aber am einfachsten die betroffenen Dateinamen umbenennen? An den Umbenennungsdialog komme ich ja nicht ran
Kann ich (und reicht es?) den Namen in der Settings.json ändern?
Vlt. auf Dateiebene umbenennen und dann neu in IPS importieren und die defekten dann aus IPS raus? Oder per Skript umbenennen und neu registrieren im IPS? Müsste man mal versuchen was einfacher geht.
Mach dir vorher eine komplette Sicherung!!! Bevor Skripte einfach so für immer verschwinden :eek:
Ein neues Importieren wollte ich auf jeden Fall vermeiden damit die Scripte keine neuen IDs bekommen.
Ich bin nun den Weg über die Settings.json gegangen und habe alle Einträge mit
.*"file":.*[üäöß].*
gesucht und manuell korrigiert. Die Dateinamen habe ich ebenfalls manuell geändert.
Schien mir am einfachsten. Bislang sieht es gut aus: IPS startet und ich kann die Scripte bearbeiten.
Ich hoffe mal, dass ich keine Abhängigkeiten übersehen habe.
Ich würde auf Umlaute an diesen Sensiblen stellen komplett verzichten. Das UTF-8/ASCII Problem wird wahrscheinlich auch erst mit PHP 7.x vollständig gelöst, da dort dann der UTF-8 Support vollstäandig ist.
dem stimme ich grundsätzlich zu. Dennoch lässt die Funktion IPS_SetScriptFile () sowohl in 3.4 als auch in 4.0 Umlaute zu. Nur in 4.0 ist das Ergebnis im Filesystem ein anderes: aus „Fensterstatus prüfen.ips.php“ wird „Fensterstatus prüfen.ips“.
Damit hatte ich bei der Konvertierung Probleme. Meiner Meinung nach liegt hier noch ein Fehler vor.