RFZ: open_basedir

Moin,
hab wieder mal ein Problem :)
Hab jetzt php als Modul im Apache und kann in der httpd.conf PHP konfigurieren.

Hab zum Test "php_admin_value safe_mode On" für einen VHost angegeben, hat funktioniert.
Dann hab ich "php_admin_value open_basedir e:\server\http" hinzugefügt und erhalte plötzlich beim aufruf aller php-seiten eine leere Site. Also Header ist normal (200 OK), aber eben absolut kein Inhalt.
Woran kann das nun wieder liegen? Die PHP Error-log sagt nix...

cu RFZ

  1. morgens auch,

    Hab jetzt php als Modul im Apache

    ähm ... ja. "Modul im Apache" triffts nun mal nicht so _ganz_ exakt. Daher wird dann deine Aussage

    und kann in der httpd.conf PHP konfigurieren.

    so richtig schön falsch. Was die Eintragungen in der httpd.conf bewirken, ist keineswegs eine "Konfiguration". Es ist lediglich der Hinweis an den Apache, einen bestimmten "Typ" von Anfragen an einen bestimmten "Handler" weiterzureichen (sehr verkürzt ausgedrückt).

    Wenn du PHP wirklich "konfigurieren" möchtest, machst du das in und mit der php.ini, und der kann eine httpd.conf völlig wurscht sein und bleiben  -  übrigens plattformunabhängig.

    Hab zum Test "php_admin_value safe_mode On" für einen VHost angegeben, hat funktioniert.

    oh, interessant.

    Dann hab ich "php_admin_value open_basedir e:\server\http" hinzugefügt

    Wo und wie hast du das "hinzugefügt" und vor allem: warum hast du das eigentlich gemacht?

    Die PHP Error-log sagt nix...

    Und was sagen die Server-logs (hier dann insbesondere die "access.log" des Apache), hat es denn überhaupt einen Zugriff gegeben?

    Grüße aus Berlin

    Christoph S.

    1. Hi,

      Hab jetzt php als Modul im Apache
      ähm ... ja. "Modul im Apache" triffts nun mal nicht so _ganz_ exakt.

      Informiere Dich über mod_php

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
      1. hallo Andreas,

        Informiere Dich über mod_php

        Ich glaube, das habe ich gelegentlich bereits getan.

        Nur ist _hier_ aufgrund der Angabe "e:\server\http" zu vermuten, daß es um ein Windows-System geht, und _da_ ist es eben mit mod_php trotz "AddModule mod_php4.c" nicht ganz so einfach (nein, ich behaupte ja nicht, daß es "gar nicht geht"). Die "Modul-Variante" wird mit Hilfe von php4apache.dll und/bzw. php4ts.dll realisiert, und die stehen nun einmal nicht "im" Apache drin  -  unter Windows.

        Ein wenig zu denken geben sollte auch, daß weder unter http://httpd.apache.org/docs/mod/#other noch unter http://httpd.apache.org/docs-2.0/mod/#other das Stichwort mod_php zu finden ist.

        Übrigens sehe ich (_nur_ unter Windows) keinen Vorteil darin, PHP unbedingt als "Modul" aufrufen zu wollen, die CGI-Variante hat es bei meinen Testinstallationen immer auch zufriedenstellend getan  -  und da es dafür den entsprechenden "Installer" gibt, halte ich das derzeit noch für den zu empfehlenden Weg  -  wenn man "Extensions" benötigt, kann man sich die ja problemlos aus dem Sourcen-Archiv dazuinstalleren und dann eben in der php.ini "konfigurieren". Belehre mich eines Besseren, wenn du es besser weißt.

        Das Ganze scheint zwar eine Spitzfindigkeit, ist meines Erachtens zum Gesamtverständnis aber nicht ganz unwichtig.

        Grüße aus Berlin

        Christoph S.

    2. Wenn du PHP wirklich "konfigurieren" möchtest, machst du das in und mit der php.ini, und der kann eine httpd.conf völlig wurscht sein und bleiben  -  übrigens plattformunabhängig.

      Ich will zwei verschiedenen VHosts zwei verschiedene Werte zuweisen, das kann ich in der ini nicht.

      Hab zum Test "php_admin_value safe_mode On" für einen VHost angegeben, hat funktioniert.
      oh, interessant.

      findest? schön..

      Wo und wie hast du das "hinzugefügt" und vor allem: warum hast du das eigentlich gemacht?

      In die httpd.conf? In einen VHost. Weil ich für jeden VHost so andere Werte angeben kann.

      Und was sagen die Server-logs (hier dann insbesondere die "access.log" des Apache), hat es denn überhaupt einen Zugriff gegeben?

      Was sollte die Access.log dazu sagen, wenn ich die Antwort 200 OK erhalte? Genau das selbe, von Apache her hat alles funktioniert.
      Nur PHP liefert eben einen leeren Inhalt.

      cu RFZ

      1. hallo,

        Ich will zwei verschiedenen VHosts zwei verschiedene Werte zuweisen

        Oh, dann sag das doch gleich. Das ist in der Tat ein "Apache-Problem", du kannst verschiedenen virtuellen hosts natürlich sehr unterschiedliche Konfigurationen mitgeben.

        Was sollte die Access.log dazu sagen, wenn ich die Antwort 200 OK erhalte?

        Auch "200 OK" kann dir einen wichtigen Hinweis liefern  -  nämlich den, daß der Apache gemäß der Anfrage das ausgeliefert hat, was verlangt wurde.

        Nur PHP liefert eben einen leeren Inhalt.

        Ist es wirklich "leerer Inhalt"? Das heißt, sind "DOCTYPE" und <html> enthalten und sonst nichts, oder ist es _völlig_ leer?

        Du müßtest einmal schauen, mit welchem Script du diesen Fehler erhältst. Wenn das _immer_ passiert, sobald du ein PHP-Script aufrufen möchtest, ist es wahrscheinlich doch die php.ini, die du dir anschauen solltest.

        Grüße aus Berlin

        Christoph S.

        1. Ist es wirklich "leerer Inhalt"? Das heißt, sind "DOCTYPE" und <html> enthalten und sonst nichts, oder ist es _völlig_ leer?

          So ist die Ausgabe:
           HTTP/1.1 200 OK
           Date: Fri, 12 Sep 2003 11:20:43 GMT
           Server: Apache/2.0.47 (Win32)
           Content-Length: 0
           Connection: close
           Content-Type: text/html; charset=ISO-8859-1

          Die PHP-Signatur im Header hab ich deaktiviert, nicht wundern dass die fehlt.

          Du müßtest einmal schauen, mit welchem Script du diesen Fehler erhältst. Wenn das _immer_ passiert, sobald du ein PHP-Script aufrufen möchtest, ist es wahrscheinlich doch die php.ini, die du dir anschauen solltest.

          Passiert bei phpinfo genauso wie wenn ich nur ein echo in das Script schreibe, oder garkeine PHP-Tags drin sind!

          An der ini kanns ja nicht liegen, bei den anderen VHosts klappts ja, und die unterscheiden sich nur durch die eine Zeile in der httpd.conf

          Christoph S.

          cu RFZ

          1. hallo nochmals,

            So ist die Ausgabe:
             HTTP/1.1 200 OK
             Date: Fri, 12 Sep 2003 11:20:43 GMT
             Server: Apache/2.0.47 (Win32)
             Content-Length: 0
             Connection: close
             Content-Type: text/html; charset=ISO-8859-1

            Das hatte ich nicht gemeint, sondern ich meinte dein "leeres Dokument", das du ja wohl im Browser siehst.

            Passiert bei phpinfo genauso wie wenn ich nur ein echo in das Script schreibe, oder garkeine PHP-Tags drin sind!

            Dann hängt es eben wahrscheinlich am "safe mode"  -  das ist schließlich ein ziemlich mächtiger Befehl. Aber mehr, als du in http://de2.php.net/features.safe-mode nachlesen kannst, weiß ich leider auch nicht.

            An der ini kanns ja nicht liegen, bei den anderen VHosts klappts ja

            "safe mode" überwacht ein Verzeichnis und sämtliche Unterverzeichnisse. Wenn du deinem zweiten virtuelle host jetzt als DocumentRoot e:\server\http\virthost2 zuweist, aber "safe mode" für e:\server\http\ gilt, müßte genau das passieren, was du beschreibst. Allerdings solltest du auch einen Warnhinweis bekommen. Ich hab das aber jetzt nicht getestet und mag an meinem Apache im Moment auch nicht herumspielen.

            Grüße aus Berlin

            Christoph S.

            1. Das hatte ich nicht gemeint, sondern ich meinte dein "leeres Dokument", das du ja wohl im Browser siehst.

              Das meinte ich doch auch, wie du siehst wird nach dem Header nix übertragen, eine LEERES Dokument eben.

              Dann hängt es eben wahrscheinlich am "safe mode"  -  das ist schließlich ein ziemlich mächtiger Befehl. Aber mehr, als du in http://de2.php.net/features.safe-mode nachlesen kannst, weiß ich leider auch nicht.

              Am Save Mode hängt's nicht, den hab ich schon längst wieder aus, den hab ich ja nur zum testen benutzt, ob das mit der hattpd.conf geht.
              Die Config unterscheidet sich wirklich nur durch die eine Einstellung mit open_basedir.

              Document Root ist e:\server\http\www_username\html\ Open Basedir wäre dann e:\server\http\www_username\

              Christoph S.

              cu RFZ