Fehler Function putenv() was disabled by the domain protection module kann in den am wenigsten erwarteten Momenten überraschen – besonders nachdem der Shop lange Zeit einwandfrei funktioniert hat. In diesem Beitrag erkläre ich, woher dieses Problem kommt und wie man es schnell löst.
Was ist putenv() eigentlich?
putenv() ist eine eingebaute PHP-Funktion, die zur Festlegung von Umgebungsvariablen während der Ausführung eines Skripts dient. PrestaShop nutzt sie unter anderem bei der Verwaltung von Lokalisierung und Übersetzungen – ruft sie auf, wenn das Locale für die Sprache des Shops festgelegt wird. Ohne diese Funktion kann der Shop zwar noch funktionieren, aber in den Logs beginnen Warnungen zu erscheinen, und in einigen Konfigurationen können Fehler direkt auf der Website sichtbar sein – was natürlich auf einer Produktionsumgebung inakzeptabel ist.
Woher kommt dieser Fehler?
Das Problem ist typisch für Shared Hosting mit [domain protection] Mechanismus Domänenschutz (engl. domain protection). Dieser Mechanismus isoliert einzelne Domains auf der Ebene des Betriebssystems voneinander, was eine gute Sicherheitspraxis ist – aber gleichzeitig blockiert er bestimmte PHP-Funktionen, einschließlich [putenv()]. putenv(). Der beliebteste Fall ist das Hosting Cyber Folks sowie Hostido, das ab einem bestimmten Zeitpunkt diese Option automatisch bei jeder neu hinzugefügten Domain oder Subdomain aktiviert hat. Das Ergebnis? Der Shop funktionierte problemlos, du hast eine Subdomain hinzugefügt oder die Domain umgeleitet – und plötzlich began er, Warnungen auszuspucken.
Warnung
Wenn der Fehler direkt auf der Shop-Website angezeigt wird (und nicht nur in den Logs), deaktiviere dringend die PHP-Fehleranzeige in der Serverkonfiguration oder der Datei config/defines.inc.php – sichtbare Fehler auf der Frontend sind ein ernstes Image- und Sicherheitsproblem.
Die vollständige Warnmeldung sieht so aus:
User Warning: Function putenv() was disabled by the domain protection module. Disable domain protection for this domain in the Server Panel to use this function.
Die Lösung ist sehr einfach und erfordert keine Änderungen am Shop-Code. Es genügt, die Domain-Trennung im Hosting-Panel zu deaktivieren.
Melden Sie sich im Panel an DirectAdmin – normalerweise verfügbar unter beispieldomäne.de:2222 oder beispieldomäne.de:2223
Gehen Sie zum Abschnitt Domain-Einstellungen
Finden Sie die Domain Ihres Shops in der Liste
Ändern Sie die Option Domain-Trennung z JA auf NEIN
Änderungen speichern
Erfolg
Nach der Deaktivierung der Domain-Trennung sollte der Fehler sofort verschwinden, ohne dass ein Server-Neustart oder PrestaShop-Cache-Rebuild erforderlich ist.
Was ist, wenn ich ein anderes Hosting-Panel habe?
Nicht jedes Hosting nutzt DirectAdmin. Unten habe ich zusammengestellt, wo Sie diese Option in anderen beliebten Panels finden:
Hosting-Panel
Wo Sie die Einstellung finden
DirectAdmin (Cyber Folks)
Domain-Einstellungen – Domain-Trennung – NEIN
cPanel
PHP Selector oder ModSecurity – überprüfen Sie deaktivierte PHP-Funktionen
Keine integrierte Domain-Trennung – überprüfen Sie die PHP-FPM-Konfiguration in /etc/php/X.X/fpm/pool.d/
Eigener Server (VPS/Dedicated)
Datei php.ini oder php-fpm.conf – Direktive disable_functions
Alternative Lösung – eigener Server oder kein Panel-Zugriff
Wenn Sie Zugriff auf die Datei php.ini oder die PHP-FPM-Konfiguration haben, überprüfen Sie, ob putenv nicht auf der Liste der blockierten Funktionen steht:
disable_functions = putenv, ...
Löschen putenv aus dieser Liste entfernen und PHP-FPM neu starten:
systemctl restart php8.1-fpm
Notiz
Passen Sie die Versionsnummer im obigen Befehl an die von Ihrem Shop verwendete PHP-Version an. Sie können dies im Hosting-Panel oder durch die Datei überprüfen phpinfo().
Lohnt sich die Sorge um diesen Fehler?
Ja. Obwohl der Shop trotz dieser Warnung oft scheinbar normal funktioniert:
Der Fehler kann auf der Seite für Kunden sichtbar sein (je nach PHP-Fehleranzeige-Konfiguration)
In einigen PrestaShop-Versionen kann die falsche Einstellung des Gebietsschemas zu Problemen bei der PDF-Rechnungserstellung oder E-Mail-Übersetzungen führen
Angesammelte Warnungen in den Protokollen erschweren die Diagnose tatsächlicher Probleme
Hinweis
Nach jedem Hinzufügen einer neuen Domain oder Subdomain zum Hosting von Cyber Folks gehen Sie sofort in die Domain-Einstellungen und überprüfen Sie die Separationsoption – sie wird standardmäßig automatisch aktiviert und es ist besser, sie zu deaktivieren, bevor der Shop Fehler zu generieren beginnt.
Haben Sie weitere Fragen zur PrestaShop-Konfiguration oder zu Hosting-Problemen? Hinterlassen Sie unten einen Kommentar.
Enthält Informationen in Bezug auf Marketingkampagnen des Nutzers. Diese werden mit Google AdWords / Google Ads geteilt, wenn die Konten von Google Ads und Google Analytics miteinander verknüpft sind.
90 Tage
__utma
ID zur Identifizierung von Benutzern und Sitzungen
2 Jahre nach der letzten Aktivität
__utmt
Dient zur Überwachung der Anzahl der Google Analytics-Serveranfragen
10 Minuten
__utmb
Wird verwendet, um neue Sitzungen und Besuche zu unterscheiden. Dieses Cookie wird gesetzt, wenn die GA.js-Javascript-Bibliothek geladen wird und kein __utmb-Cookie vorhanden ist. Das Cookie wird jedes Mal aktualisiert, wenn Daten an den Google Analytics-Server gesendet werden.
30 Minuten nach der letzten Aktivität
__utmc
Wird nur mit alten Urchin-Versionen von Google Analytics verwendet und nicht mit GA.js. Wurde verwendet, um zwischen neuen Sitzungen und Besuchen am Ende einer Sitzung zu unterscheiden.
Ende der Sitzung (Browser)
__utmz
Enthält Informationen über die Verkehrsquelle oder die Kampagne, die den Nutzer auf die Website geleitet hat. Das Cookie wird gesetzt, wenn das GA.js-Javascript geladen wird und aktualisiert, wenn Daten an den Google Anaytics-Server gesendet werden
6 Monate nach der letzten Aktivität
__utmv
Enthält benutzerdefinierte Informationen, die vom Webentwickler über die Methode _setCustomVar in Google Analytics festgelegt wurden. Dieses Cookie wird jedes Mal aktualisiert, wenn neue Daten an den Google Analytics-Server gesendet werden.
2 Jahre nach der letzten Aktivität
__utmx
Wird verwendet, um festzustellen, ob ein Benutzer in einem A/B- oder multivariaten Test enthalten ist.
18 Monate
_ga
ID zur Identifizierung der Benutzer
2 Jahre
_gali
Wird von Google Analytics verwendet, um festzustellen, welche Links auf einer Seite angeklickt werden.
30 Sekunden
_ga_
ID zur Identifizierung der Benutzer
2 Jahre
_gid
ID, die zur Identifizierung der Nutzer für 24 Stunden nach der letzten Aktivität verwendet wird
24 Stunden
_gat
Dient zur Überwachung der Anzahl der Google Analytics-Serveranfragen bei Verwendung von Google Tag Manager
1 Minute
SourceBuster wird von WooCommerce für die Zuordnung von Bestellungen auf Basis der Benutzerquelle verwendet.
Name
Beschreibung
Dauer
sbjs_erste
Informationen über den Ursprung des Verkehrs beim ersten Besuch des Besuchers in Ihrem Geschäft (nur, wenn der Besucher vor Ablauf der Sitzung zurückkehrt)
Sitzung
sbjs_aktuell
Informationen über die Herkunft des Verkehrs für den aktuellen Besuch des Besuchers in Ihrem Geschäft
Sitzung
sbjs_first_add
Zeitstempel, verweisende URL und Eingangsseite für den ersten Besuch Ihres Besuchers in Ihrem Shop (nur anwendbar, wenn der Besucher zurückkehrt, bevor die Sitzung abläuft)
Sitzung
sbjs_current_add
Zeitstempel, verweisende URL und Einstiegsseite für den aktuellen Besuch Ihres Besuchers in Ihrem Shop
Sitzung
sbjs_migrationen
Technische Daten zur Unterstützung bei der Migration zwischen verschiedenen Versionen der Tracking-Funktion
Sitzung
sbjs_session
Die Anzahl der Seitenaufrufe in dieser Sitzung und der aktuelle Seitenpfad
30 Minuten
sbjs_udata
Informationen über den Benutzer-Agenten des Besuchers, wie z. B. IP, den Browser und den Gerätetyp