Wie erstelle ich benutzerdefinierte php.ini-Dateien für jeden virtuellen Host?

8

Ich habe EasyPHP WAMP nur für die lokale Entwicklung installiert (ich hosste keine Websites).

Gibt es eine Möglichkeit, benutzerdefinierte PHP-Einstellungen für separate virtuelle Hosts festzulegen?

Derzeit und sofort wird die php.ini -Datei geladen von: C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.ini Es wäre schön, wenn ich zum Beispiel eine benutzerdefinierte php.ini -Datei in das virtuelle Host-Verzeichnis einfügen könnte, um sie zu überschreiben Einstellungen in der ursprünglichen php.ini Auf diese Weise könnte ich besser die Umgebung eines Produktionsservers pro Standort emulieren.

Ich habe gesehen, dass dies mit Online-Hosting-Accounts funktioniert. Aber ich kann mir nicht vorstellen, wie das auf meinem Rechner funktioniert.

    
Joao 10.03.2014, 19:36
quelle

3 Antworten

12

Die Verwendung von php.ini files ist ziemlich einfach für CGI / FastCGI-basierte PHP-Installationen, aber es ist nicht praktikabel, wenn PHP als Apache-Modul (mod_php) ausgeführt wird, da der ganze Server eine einzige Instanz des PHP-Interpreters ausführt >

Mein Rat:

  • Stellen Sie in PHP selbst so viele Einstellungen wie möglich ein:

    %Vor%

    Mit anderen Worten, Anweisungen, die zur Laufzeit geändert werden können.

  • Legen Sie den Rest der Dateien aus Apache-Einstellungsdateien pro Verzeichnis fest (aka .htaccess ):

    %Vor%

    , d. h. Einstellungen, die vor dem Start des Skripts definiert werden müssen

Weitere Einzelheiten finden Sie in der Laufzeitkonfiguration .

Manchmal benötigen Sie tatsächlich andere -Einstellungen in Entwicklung und Produktion. Es gibt endlose Möglichkeiten, das mit PHP-Code zu lösen (von der Erzeugung einer booleschen Konstanten von der $_SERVER['HTTP_HOST'] -Variablen bis zu einer config.php -Datei mit unterschiedlichen Werten), aber es ist mit .htaccess schwieriger. Normalerweise verwende ich die <IfDefine> -Direktive :

%Vor%

... wobei DEV-BOX eine Zeichenfolge ist, die ich an die lokale Apache-Befehlszeile übergebe:

%Vor%

Wenn Sie Apache als Dienst ausführen, kann das -D DEV-BOX -Bit in der Windows-Registrierung hinzugefügt werden, z. B .:

%Vor%

Ähnliches: Finden Sie heraus, wie PHP auf dem Server läuft (CGI ODER fastCGI ODER mod_php)

    
Álvaro González 11.03.2014, 10:02
quelle
2

Einfache Verwendung der benutzerdefinierten php.ini-Datei für vhost unter Verwendung von Fast CGI ist das Kopieren der php.ini in einen Ordner im Host wie "customini".

Danach zu Ihrer vhost-Anweisung und fügen Sie diese einfache Zeile hinzu:

%Vor%

SEI HABEN / auf deinem Pfad no \ , (funktioniert nicht mit \ )

Starten Sie Apache neu.

Das ist alles!

Volles Beispiel (auf Windows Server hier):

%Vor%     
Sontae 24.12.2014 08:38
quelle
0

Mehrere Kommentatoren erwähnen Vagrant , was eine ausgezeichnete Lösung ist.

Wenn Sie nicht daran interessiert sind, Vagrant zu verwenden, können Sie FastCGI als Schnittstelle zu Apache untersuchen und den vorgeschlagenen SetEnv PHPRC... Vorschlag verwenden. Blog :

  

Apache & amp; PHP: Mehrere PHP.ini-Konfigurationsdateien (Sonntag, 8. Februar 2009)

     

Quelle: Ссылка

     

Das zweite Problem besteht darin, die Umgebungsvariable PHPRC zu verwenden   konfigurierbar in Apache mit der SetEnv-Direktive. Diese Richtlinie   Mit dieser Option können Sie eine Umgebungsvariable festlegen, die an alle übergeben wird   CGI-Skript und / oder Server Side Include (SSI) in einem statischen (x) HTML   Seite (oder einen anderen Dokumenttyp). In diesem Fall würden Sie es jedem erzählen   PHP-CGI-Instanz, wo die Konfigurationseinstellungen zu finden sind. Das Beispiel   wäre (fällt mit dem vorherigen zusammen):

%Vor%      

Die PHP-Dokumentation ändert jedoch die Laufzeit   Konfiguration   schlägt vor, dass Sie bestimmte Werte wie php_value ausprobieren können   loaalong mit, möglicherweise die SetEnv Direktive.

Er schlägt eine andere Option vor, die FastCGI nicht verwendet, sondern stattdessen die Konfigurationsoptionen php_value , php_flag usw. verwendet.

Andere scheinen etwas Erfolg beim Ausführen von Skripts durch FastCGI zu haben, siehe jedoch: Trennen Sie php.ini für verschiedene virtuelle Hosts

Andere Vorschläge beinhalten die PHPINI -Direktive, die für Ihre Bedürfnisse relevant sein kann, siehe:

    
Sean Quinn 10.03.2014 20:16
quelle

Tags und Links