Testumgebung "wie bei 1&1" (PHP,(Fast)CGI,custom .ini)

Hi,

entschuldigt den schwammigen Titel.

Ich möchte unseren Testserver neu aufsetzen und dabei möglichst nahe an den Einstellungen/Vorraussetzungen bei unserem Provider 1&1 bleiben.
Das Ziel ist die Dateien der Testumgebung immer eins zu eins austauschbar mit der Onlineumgebung zu haben.

Momentan bietet 1&1 PHP 4, PHP 5.2 und PHP 5.4.

Der Testserver läuft unter Windows XP.
Ich habe die besagten PHP-Versionen bereits so eingerichtet (CGI), dass die 1&1-eigenen .htaccess Anweisungen zum umschalten zwischen den Versionen auch in der Testumgebung funktionieren.
Alle 'zentralen' .ini Einstellungen sind ebenfalls so gesetzt wie in der Online-Umgebung (naja, die sinnvollen).

Das was mir jetzt noch fehlt ist die Möglichkeit in Unterordnern eine eigene php.ini abzulegen, die die Einstellung der zentralen php.ini ändern/überschreiben kann und zwar auf PHP_INI_SYSTEM Ebene und nur für das spezielle Verzeichnis gültig. Eben so wie es beim Provider möglich (bzw. nötig) ist.

Ich weiss jetzt nicht so recht wo ich ansetzen soll und würde mich freuen wenn mir jemand einen Tip geben könnte.
 
Hi,

je nach dem was du für eine Apache nutzt dann entweder direkt in der config

Code:
<Directory /<DeinVerzeichniss>>
   <IfModule mod_php5.c>

     # Syntax
     php_admin_value <Einstellung> <Wert>
   </IfModule>
</Directory>

Wenn du fcgi nutzt dann hilft dir das tutorial weiter:

Individual php.ini files for PHP FCGI and PHP CGI - cPanel Forums

Noch ein Hinweis eine identische Umgebung, welche real unter linux läuft, lässt sich wohl nicht unter Windows 1:1 verwenden (u.a. gibt es immer ein paar pfad probleme), das solltest du bei deiner testumgebung dringend beachten
 
Vielen Dank erst einmal.
Der Link hat mir zumindest weitere Einsichten gebracht.

Um die Schritte nachzuvollziehen habe ich den Apache unter Linux installiert, PHP kompiliert und das Wrapper-Script aus dem Link als Handler im Apache benutzt.

In dem Beispielskript wird ein fester Pfad benutzt:
Code:
#!/bin/sh 
/usr/local/cpanel/cgi-sys/php5 -c /home/user/public_html/cgi-bin
Angepasst auf meine Umgebung klappt das auch soweit.

Allerdings:

1. wird dann NUR die php.ini im angegebenen Verzeichnis verarbeitet.
Die php.ini Dateien bei 1&1 enthalten immer nur einige wenige Angaben.
Ich müsste also (soweit ich das checke) alle Erweiterungen mit einkompilieren.
Nachdem das mit den Abhängigkeiten schon unter Linux ein echter Schmerz war, grauts mich das unter Windows zu versuchen.

2. So wird eine feste .ini-Datei verwendet, nicht diejenige die im Verzeichnis der aufgerufenen .php-Datei liegt.
Mein Script-Fu bzw. mein Verständnis des Vorgangs (Aufruf des Wrapper-Skripts durch den Apache) reicht nicht wirklich aus dies dynamisch hinzukriegen.
$(pwd) jedenfalls gibt immer das Verzeichnis des Wrapper-Skripts.

3. Enthält das angegebene Verzeichnis keine php.ini wird nicht die Standard aufgerufen sondern garkeine.
Das nur mal so, läuft auf ein ähnliches Problem raus wie 1.

4. Wie zum Belzebub könnte ich so ein Wrapper-Skript für Windows schreiben? Mit ner .bat? Da steh ich völlig auf dem Schlauch...

Als kleines Beispiel was ich erreichen möchte:

Wir erstellen PDF mit PDFlib in einigen Skripten in einem Verzeichnis:
- eine .htaccess setzt die PHP-Version auf 5.2
- eine php.ini setzt extension_dir auf eine Stelle des Webspace an der die PDFlib Bibliothek liegt und 'läd' die Extension.

Nun wäre es super mit der .htaccess (das klappt ja schon) und der php.ini in der Testumgebung diesselben Ergebnisse zu erzielen wie Online.

Eigentlich habe ich schon etwas viel Zeit darauf investiert, aber jetzt wäre es natürlich schön das hinzukriegen.
 
Wir erstellen PDF mit PDFlib in einigen Skripten in einem Verzeichnis:
- eine .htaccess setzt die PHP-Version auf 5.2
- eine php.ini setzt extension_dir auf eine Stelle des Webspace an der die PDFlib Bibliothek liegt und 'läd' die Extension.

wenn "nur" das problem ist, erlaube doch das setzen von php einstellungen per script und spar dir damit das komplette erstellen von php.ini abhängigkeiten...

siehe:

PHP: dl - Manual

und

PHP: ini_set - Manual

bei den anderen probleme kann ich nur bedingt helfen, meiner Meinung nach wird eigtl eine standard php.ini immer geladen und mit der eigenen php.ini nur die einstellungen überschrieben (ähnlich wenn du es mit einen php script überschreiben würdest, wenn dies zugelassen wird)
 
Zurück
Oben