Laravel-Umgebungsvariablen, die zwischen Anwendungen verloren gehen, wenn sie sich über GuzzleHttp @ aufruf

Ich habe zwei Laravel 5.2-Anwendungen (nennen wir sie A und B) auf meinem lokalen Computer, die beide auf zwei verschiedenen virtuellen Hosts auf meinem lokalen Apache 2.4-Entwicklungsserver konfiguriert sind.

Beide Anwendungen rufen sich manchmal über GuzzleHttp gegenseitig an.

Zu einem Zeitpunkt wollte ich Verschlüsselung verwenden, und ich fing an, "mac is invalid" -Ausnahmen von Laravel's Encrypter zu erhalten.

ei der Untersuchung des Problems stellte ich fest, dass App B plötzlich einen Verschlüsselungsschlüssel (app.key) von App A erhält, wenn App A App B aufruft! Dadurch wird die Verschlüsselung unterbrochen, da die Werte in App B mit dem Verschlüsselungsschlüssel von App B verschlüsselt wurden.

Während des Debuggens stellte ich fest, dass die Dotenv-Bibliothek einige Logik besitzt, um vorhandene Variablen beizubehalten, wenn sie gesetzt sind. Ich habe festgestellt, dass sowohl $ _ENV als auch $ _SERVER keine durchgesickerten Variablen haben, abergetenv() hat sie!

Ich bin ein bisschen verwirrt, weil PHPputenv sagt:

Die Umgebungsvariable existiert nur für die Dauer der aktuellen Anforderung.

Es scheint, als ob ich während der aktuellen Anfrage eine weitere Anfrage über GuzzleHttp starte, wobei die von Dotenv in A mit @ gesetzten Variablputenv() wird plötzlich in App B verfügbar, die von GuzzleHttp angefordert wird!

ch verstehe, dass dies kein Problem auf Produktionsservern sein wird, auf denen der Konfigurationscache anstelle von Dotenv verwendet wird und höchstwahrscheinlich beide Apps auf unterschiedlichen Apache-Servern ausgeführt werden, aber dieses Verhalten bricht meinen Entwicklungsprozes

Wie konfiguriere ich Laravel oder GuzzleHttp oder Apache oder PHP, um dies zu verhindernputenv() Leck von App A in App B?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage