Signatur
Beschreibung
win32_remove_service_env_var löscht eine zuvor für einen Windows-Dienst definierte Umgebungsvariable aus der Windows-Registrierungsdatenbank (Registry). Umgebungsvariablen für Dienste werden unter dem Registrierungsschlüssel des jeweiligen Dienstes gespeichert und beim Start des Dienstes in dessen Prozessumgebung geladen.
Diese Funktion ist Teil der PECL-Erweiterung win32service und steht ausschließlich auf Windows-Systemen zur Verfügung. Sie setzt voraus, dass der Dienst mit der Funktion win32_create_service angelegt und die Variable zuvor mit win32_set_service_env_var gesetzt wurde.
Um die Änderung wirksam zu machen, muss der betreffende Dienst neu gestartet werden, da Umgebungsvariablen nur beim Start des Dienstprozesses aus der Registry gelesen werden. Ein laufender Dienst wird durch den Aufruf dieser Funktion nicht sofort beeinflusst.
Für den Aufruf dieser Funktion sind in der Regel erhöhte Berechtigungen (Administrator-Rechte) erforderlich, da Änderungen an Dienst-Einträgen in der Windows-Registrierung administrative Zugriffsrechte voraussetzen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $service_name Pflicht | string | Der interne Name (Short Name) des Windows-Dienstes, wie er in der Dienstverwaltung und der Registry eingetragen ist. | |
| $env_var Pflicht | string | Der Name der zu entfernenden Umgebungsvariable (z. B. MY_APP_CONFIG). Groß-/Kleinschreibung ist hierbei zu beachten. |
Rückgabewert
Win32ServiceException ausgelöst.Beispiele
Umgebungsvariable eines Dienstes entfernen
<?php
// Entfernt die Umgebungsvariable 'APP_ENV' des Dienstes 'MeinPHPDienst'
try {
win32_remove_service_env_var('MeinPHPDienst', 'APP_ENV');
echo "Umgebungsvariable 'APP_ENV' wurde erfolgreich entfernt.\n";
echo "Bitte den Dienst neu starten, damit die Änderung wirksam wird.\n";
} catch (Win32ServiceException $e) {
echo "Fehler beim Entfernen der Umgebungsvariable: " . $e->getMessage() . "\n";
}
Mehrere Umgebungsvariablen eines Dienstes entfernen
<?php
$serviceName = 'MeinPHPDienst';
$varsToRemove = ['APP_ENV', 'DB_HOST', 'DB_PORT'];
foreach ($varsToRemove as $var) {
try {
win32_remove_service_env_var($serviceName, $var);
echo "Umgebungsvariable '{$var}' wurde entfernt.\n";
} catch (Win32ServiceException $e) {
echo "Fehler bei '{$var}': " . $e->getMessage() . "\n";
}
}
echo "Alle Variablen verarbeitet. Dienst ggf. neu starten.\n";
// Wichtig · Fallstricke
Nur Windows: Diese Funktion ist ausschließlich auf Windows-Systemen verfügbar und erfordert die PECL-Erweiterung win32service. Auf anderen Betriebssystemen führt der Aufruf zu einem fatalen Fehler.
Berechtigungen: Das ausführende PHP-Skript benötigt Administrator-Rechte, um Änderungen an Dienst-Einträgen in der Windows-Registry vorzunehmen. Fehlende Berechtigungen führen zu einer Win32ServiceException.
Neustart erforderlich: Änderungen an Umgebungsvariablen eines Dienstes werden erst beim nächsten Start des Dienstprozesses wirksam. Ein laufender Dienst muss explizit neu gestartet werden.
Sicherheitshinweis: Stellen Sie sicher, dass keine sensiblen Umgebungsvariablen (z. B. Passwörter, API-Schlüssel) versehentlich entfernt werden, da dies den Dienst funktionsunfähig machen kann.