MichaelR: Include-Problem ???

Hallo,

auf einem Server befinden sich in etwa folgende Strukturen:

Root-Ordner

  • datei.php
  • ...
    +--/lib/
       +-- Routines.php

Ich erhalte jetzt des öfteren folgende Warnungen/Fehler:

Warning: main(lib/datei.php): failed to open stream: No such file or directory in /www/xxx/folder/root-ordner/lib/Routines.php on line 19

Auf meinem lokalen Apache-Server (mit PHp 4.2.1) gibt es keine Probleme; auf dem anderen Server (PHP 4.3.3) im Netz (hab' dort keine Admin-Rechte) bekomme ich seit ein paar Tagen die obigen Probleme. Weiß jemand Rat?

Vielleicht hat es was damit zu tun:

Bevor die Probleme mir aufgefallen sind, wurde am PHP.ini etwas verändert und zwar das open_basedir wurde erweitert und sieht jetzt so aus:

NEU:
/usr/local/share/pear:/www/xxx:/tmp

(wobei hier wie oben die xxx für einen bestimmten Ordner stehen)

FRÜHER:

/www/xxx:/tmp

Sind die beiden Pfade richtig?

Und noch was: manchmal kommt auch eine Meldung, dass die Datei im include-Befehl nicht im Verzeichnis /usr/local/share/pear/ zu finden sein, obwohl ein include wie

include(lib/datei_2.php)

URL-Technisch richtig ist.

Wer kann mir bitte helfen???

Danke+Grüße
Michael

  1. ReHallo,

    Und noch was: manchmal kommt auch eine Meldung, dass die Datei im include-Befehl nicht im Verzeichnis /usr/local/share/pear/ zu finden sein, obwohl ein include wie

    include(lib/datei_2.php)

    include ("lib/datei_2.php")

    URL-Technisch richtig ist.

    Mindestens die Häkchen setzen.

    Dann sollten die include-Dateien auch außerhalb der Doc-Root liegen, damit sie nicht versehentlich heruntergeladen werden können, wenn die PHP-Extension des Apachen mal ausfällt. Wenn sie nämlich ausgefallen ist, kommen auch die öffentlichen Scripte nicht mehr heran. Die werden dann aber einfach ungeparst an den Client geschickt.

    Hast Du Dir schon mal <?php phpinfo() ?> aufgerufen? Da steht unter anderem ein include-path drin. Schau mal im handbuch unter "include_path"

    include_path string
    <cite>
    Hier können Sie ein Verzeichnis angeben, in dem die require(), include() und fopen_with_path() Funktionen nach Dateien suchen. Das Format ist ähnlich der PATH Umgebungsvariablen des jeweiligen Systems: Eine Liste von Verzeichnissen, getrennt durch einen Doppelpunkt bei UNIX oder ein Semikolon bei WINDOWS. Beispiel 4-1. UNIX include_path

    include_path=.:/home/httpd/php-lib
    </cite>

    Dieser Pfad sollte für Dich zugänglich sein!

    Grüße

    Tom

    1. Hallo,

      include(lib/datei_2.php)

      include ("lib/datei_2.php")

      URL-Technisch richtig ist.

      Mindestens die Häkchen setzen.

      Danke, die sind im Original-Script gesetzt; war hier nur vergessen.

      [...]

      Hast Du Dir schon mal <?php phpinfo() ?> aufgerufen? Da steht unter anderem ein include-path drin. Schau mal im handbuch unter "include_path"

      include_path string
      <cite>
      Hier können Sie ein Verzeichnis angeben, in dem die require(), include() und fopen_with_path() Funktionen nach Dateien suchen. Das Format ist ähnlich der PATH Umgebungsvariablen des jeweiligen Systems: Eine Liste von Verzeichnissen, getrennt durch einen Doppelpunkt bei UNIX oder ein Semikolon bei WINDOWS. Beispiel 4-1. UNIX include_path

      include_path=.:/home/httpd/php-lib
      </cite>

      Danke. Vielleicht liegt das am Doppelpunkt / Strichpunkt - muss mal schauen, ob das ein Win oder Unix Server ist...

      Melde mich wieder, falls das Problem weiterhin besteht.

      Danke schonmal.

      Michael