Skip to content

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

  1. Ins Backend gehen und ein User-Panel öffnen
  2. Zwischen den categories wechseln (mit Debugger an!)
  3. 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ß.