Ajax: Unterschiedliches PHP CWD jenachdem, ob der Ajax-Bundler benutzt wird oder nicht
Problem
Jenachdem, ob der Ajax-Bundler an oder aus ist, wird in der PHP-Runtime ein unterschiedliches Current Working Directory (CWD) verwendet.
Dadurch können bestimmte Dateien / Pfade u.U. nicht korrekt von PHP aufgelöst werden.
Beispiel
- Ins Backend gehen und ein User-Panel öffnen
- Zwischen den categories wechseln (mit Debugger an!)
- An dieser Stelle https://dev.quiqqer.com/quiqqer/core/-/blob/main/src/QUI/Users/Utils.php#L142 mit
getcwd()
das CWD ausgeben
Ajax-Bundler AN
Das CWD ist (korrekterweise!) das QUIQQER Root-Verzeichnis.
Ajax-Bundler AUS
Das CWD ist [QUIQQER_ROOT]/packages/quiqqer/quiqqer/admin
.
Auswirkung
Wenn ich z.B. eine neue Kategorie im User-Panel habe, wird in https://dev.quiqqer.com/quiqqer/core/-/blob/main/src/QUI/Users/Utils.php#L142 als $plugin
-Pfad so etwas gesendet:
packages/[NAMESPACE]/[PACAKGE]/user.xml
Das file_exists()
kann bei Ajax-Bundler AUS dann den Pfad nicht mehr auflösen und denkt, die user.xml
in meinem Paket existiert nicht. Dadurch wird im User-Panel einfach nichts geladen und der category Content bleibt weiß.