mbr: PHP Einstellungen pro virtual Host vornehmen

Hallo Forum,
habe folgendes Problem: auf einem Server läuft Apache 2.0.48 und es existieren verschiedene virtual hosts. Ich möchte nun auf einem virtual host die PHP Einstellung allow_url_fopen auf ON setzen. Für alle anderen virtual hosts soll weiterhin die in der php.ini Datei vorgegebene Einstellung OFF gelten. Ich habe bisher folgendes versucht:

in der httpd.conf zwischen <VirtualHost *:80> und </VirtualHost> habe ich folgende Zeile eingetragen:

php_admin_flag allow_url_fopen ON

(ich habe mir den "richtigen" virtual host ausgesucht)
Nach Neustart des Servers (httpd2 -k restart) und aufrufen einer Testseite mit phpinfo(); ist leider keine Änderung zu sehen.

Ich habe mehrere Varianten ausprobiert:

php_admin_flag allow_url_fopen ON
php_admin_flag allow_url_fopen on
php_admin_flag allow_url_fopen 1

funktioniert leider alles nicht. Hat jemand eine Idee, woran es liegen könnte? Oder gibt es vielleicht auch noch einen ganz anderen Lösungsansatz?

liebe Grüße mbr

P.S.: ich bin mir durchaus bewußt, dass allow_url_fopen ON sicherheitstechnisch problematisch sein kann, zumal dann auch files von entfernten Servern includiert werden können (Natürlich nur, falls auf dem Server schlampig programmierte PHP Skripte liegen >;-) ).

  1. hallo,

    Ich möchte nun auf einem virtual host die PHP Einstellung allow_url_fopen auf ON setzen. Für alle anderen virtual hosts soll weiterhin die in der php.ini Datei vorgegebene Einstellung OFF gelten.

    Da du offenbar unmittelbaren Zugriff auf die httpd.conf hast, kannst du innerhalb eines virtualhost-Containers auch die (in der Apache-Doku nicht aufgeführte) Direktive "PHPINIDir" benutzen, beispielsweise in dieser Form:
      PHPINIDir "D:/Apache/conf"
    (der angegebene Pfad gilt so natürlich nur für Windows, die Direktive ist aber unter Linux genauso einsetzbar) Dann legst du in das angegebene Verzeichnis eine "mini"-php.ini, die nur diejenigen Eintragungen enthält, die die Vorgaben aus deiner zentralen php.ini überschreiben sollen.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph,
      vielen dank für deine Antwort. Leider bleibt das Problem bestehen.
      Ich habe bis eben probiert, die genannte Direktive einzubauen, leider ohne Erfolg. Zunächst habe ich eine Kopie der php.ini /etc/schachverein gespeichert. Diese Datei (/etc/schachverein/php.ini) habe ich dann an der entscheidenden Stelle verändert. Danach habe ich die httpd.conf editiert und dann den Apache neu gestartet. Wenn ichj jetzt das PHP Script mit phpinfo(); aufrufe, sehe ich immer noch die alten Werte und er schreibt mir auch als Konfigurationsfile /etc/php.ini Anscheinend will er die Direktive nicht befolgen...
      Ich habe dann noch zwei Dinge ausprobiert (deshalb kommt diese erneute Nachfrage hier auch etwas später)

      1. habe ich in der httpd.conf innerhalb des entsprechenden "virtual hosts Containers" das DocumentRoot auf ein vorhandenes Unterverzeichnis gesetzt, um ganz sicherzugehen, dass ich auch an der korrekten Stelle arbeite. Habe dann den Domainnamen im Browser eingegeben und es wurde auch brav die index.html des Unterverzeichnisses angezeigt. Die Änderungen an der httpd.conf zeigen also generell erstmal Wirkung

      2. habe dann die Direktive

      PHPIniDir /etc/schachverein

      ganz ans Ende der httpd.conf geschrieben und den Server neu gestartet. Siehe da, auch diese Änderungen schluckt er nicht. (nein, keine Fehlermeldung, aber es werden trotzdem die Werte der alten php.ini angezeigt)

      Muss ich noch auf irgendwas besonderes achten? habe die Direktive auch in verschiedenen Variationen ausprobiert (jeweils mit anschliessendem Neustart des Servers...)

      PHPINIDir "/etc/schachverein"
      PHPINIDir /etc/schachverein/
      PHPINIDir /etc/schachverein/php.ini
      PHPINIDir "/etc/schachverein/"
      PHPINIDir "/etc/schachverein/php.ini"
      PHPIniDir "/etc/schachverein"
      PHPIniDir /etc/schachverein/
      PHPIniDir /etc/schachverein/php.ini
      PHPIniDir "/etc/schachverein/"
      PHPIniDir "/etc/schachverein/php.ini"

      Hat alles nichts gebracht. Vielleicht sehe ich ja den Wald vor lauter Bäumen nicht und du hast noch eine Idee??

      Liebe Grüße mbr

  2. echo $begrüßung;

    php_admin_flag allow_url_fopen ON
    php_admin_flag allow_url_fopen on
    php_admin_flag allow_url_fopen 1

    funktioniert leider alles nicht. Hat jemand eine Idee, woran es liegen könnte? Oder gibt es vielleicht auch noch einen ganz anderen Lösungsansatz?

    Was sagt das Error-Log des Apachen?

    allow_url_fopen ist (ab PHP 4.3.5) zwar "changeable" in PHP_INI_SYSTEM (siehe Kapitel php.ini directives), aber laut Beschreibung im Handbuch wurde das nochmal auf die php.ini eingeschränkt.

    echo "$verabschiedung $name";

    1. Hallo dedlfix

      Was sagt das Error-Log des Apachen?

      Öhm (rotwerd) Naja, da hatte ich noch nicht nachgeschaut. Allerdings
      habe ich das nun nachgeholt. Zum fraglichen Zeitpunkt (Neustart des Apachen) gibt es allerdings keine Fehlermeldungen. Dafür fehlt in zwei oder drei Projekten von mir anscheinend die robots.txt (ich vermute mal, die Meldung besagt, dass ein spider versucht hat, die domain anzusurfen und diese Datei nicht gefunden hat...). In einer HTML Datei wird eine ausgelagerte CSS-Datei nicht gefunden, in einer anderen eine ausgelagerte JS Datei. Werde diese beiden Fehler jetzt beheben. Ansonsten nichts auffälliges im Error-Log.
      Da auch der Tip von Christoph Schnauß mit der PHPINIDir Direktive nicht geklappt hat, werde ich jetzt die Holzhammer-Methode verwenden (Ändern der php.ini), damit mein Bekannter, der die Webseite "programmiert" und mich darum gebeten hatte, den fopen wrapper freizuschalten ersteinmal arbeiten kann. Ich probiere dann, ob (und wie) es möglich ist, den wrapper wieder selectiv (pro domain) rauszunehmen.
      Dir und Christoph auf jeden Fall erstmal schönen Dank für eure Bemühungen. Sollte sich bei mir noch das aha Erlebnis einstellen, woran es nun liegt, werde ich es dem Forum selbstverständlich mitteilen.

      Liebe Grüße mbr