Konfiguration, die das Deployment verwaltet (ManagedByDeployment)
Seit 6.0.15. Ein Schalter pro Siteaccess, standardmäßig aus:
# settings/siteaccess/<admin siteaccess>/site.ini.append.php, or an extension's
# versioned settings; never written from the admin
[ConfigurationSettings]
ManagedByDeployment=enabledIst er eingeschaltet, kommt die Konfiguration dieses Siteaccess nur aus dem Deployment (der Versionsverwaltung), und
die Administrationsoberfläche ändert sie auf dem Server nicht. Ohne ihn schreiben der INI-Editor, die Editoren für
Werkzeugleisten und Menüs und der Template-Editor *.ini.append.php- und .tpl-Dateien in das Release-Verzeichnis, wo
die Versionsverwaltung sie nicht sieht und das nächste Deployment sie verwirft.
Was er sperrt
In einer Webanfrage, bei eingeschaltetem Schalter:
- Ansichten. Die Ansichten in
expManagedConfiguration::LOCKED_VIEWSantworten wie eine in[SiteAccessRules]abgeschaltete Ansicht (standardmäßig mit 404, sieheDisabledModuleResult), gleich, was die Rollen sagen:settings/edit,setup/settingstoolbar, die Editoren für Werkzeugleisten und Menüs (Werkzeugleiste vonvisual/undsetup/, toolbarlist, menuconfig), der Template-Editor (templateedit, templatecreate), der Einrichtungsassistent (setup/init), die Aktivierung von Extensions (setup/extensions), die Codegeneratoren (setup/rad,setup/radsurvey, kerneloverride, modulewizard, datatype, templateoperator, workflowevent und die *Extension-Assistenten) undpackage/upload|install|uninstall|create|export. Die Liste steht in der Klasse, nicht in einer INI-Datei, sodass eine Einstellungsdatei sie nicht abschwächen kann. - Menüs und Links. Menüs, Reiter und das Dashboard blenden diese Ansichten über die Prüfung
fetch( 'user', 'can_open' )aus, und die Templates von admin und admin4 blenden die Links zum Bearbeiten, Anlegen, Importieren und Exportieren aus, die zu ihnen führen. - Schreibende Stellen.
eZINI::save()gibt false zurück, undexpIniEditor::save()wirft eine Ablehnung (expIniExceptionREFUSED). Das hält auch schreibende Stellen auf, die die Liste nicht kennt: Extension-Module, ezjscore-Aufrufe, die Einstellungen der Debug-Leiste, die Einstellungsseiten für Audit und Mail-Absender, später hinzugefügte Ansichten. - Einrichtungsassistent. Er startet nicht, gleich, was
[SiteAccessSettings] CheckValiditysagt. - Pakete.
package/comparevergleicht weiter, bietet aber keinen Import an; Paketliste und Paketansicht bieten kein Entfernen an.
Was offen bleibt
- Ansichten, die nur lesen:
settings/view, die Listen der Templates und Pakete,setup/cache,setup/info, die Protokolle. - Kommandozeilenskripte und das Deployment selbst (SAPIs
cliundphpdbg), einschließlichexp:iniundbin/php/*.php. - Schlüsselmaterial, das der Code bei der ersten Verwendung selbst erzeugt (die Audit-Schlüssel, das Geheimnis der
Mail-Einstellungen): Es ist Laufzeitzustand, keine Konfiguration, und wird weiterhin geschrieben (Option
generatedSecretvonexpIniEditor::save()).
Webserver
Eine Webanfrage ist jede SAPI außer cli und phpdbg, und außerdem ein CLI-Prozess, der das Web bedient: die Worker
von Velocity (QBIX_SERVER_VERSION, QBIX_WORKER) und jeder CLI-Prozess mit einer Anfragemethode und einem Header
Host (expManagedConfiguration::isWebServerInCli()). PHP-FPM, Apache, FrankenPHP, der eingebaute Server und Velocity
lehnen also alle auf dieselbe Weise ab.
Grenzen
- Das Installieren eines Pakets auf der Kommandozeile schreibt weiterhin in die Datenbank, und Pakete können Inhalte enthalten.
- Dateiberechtigungen auf dem Release-Verzeichnis bleiben die stärkere Maßnahme. Dieser Schalter ist ein Schutz auf Anwendungsebene, kein Ersatz für sie.
Kompatibilität
settings/site.ini liefert ManagedByDeployment=disabled aus, und eine fehlende Einstellung gilt als ausgeschaltet,
sodass sich bestehende Installationen wie bisher verhalten. Templates, die die geänderten Admin-Templates überschreiben,
funktionieren weiter; sie zeigen nur weiterhin Links, die der Schalter dann mit der Seite für abgeschaltete Ansichten
beantwortet.
Tests
tests/tests/kernel/classes/expManagedConfigurationTest.php (ohne Datenbank): Jede gesperrte Ansicht existiert, jede
ist mit dem Schalter gesperrt und ohne ihn offen, die nur lesenden Ansichten bleiben offen, eZINI::save() und
expIniEditor::save() lehnen in einer Webanfrage ab (auch in einem CLI-Webserver) und schreiben auf der
Kommandozeile, erzeugte Schlüssel werden weiterhin geschrieben, und settings/site.ini liefert den Schalter
ausgeschaltet aus.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.