Achim74: include funktioniert nicht (problem mit include_path)

Hallo !

ich habe in der PHP.ini folgenden include_path:

.:.:/usr/share/php5:/usr/share/php5/PEAR

In /usr/share/php5/Zend liegt z.B. mein Zend-Framework.

Wenn ich Zend/Sonstwas.php includen will kommt die Meldung dass er nichts gefunden hat. Ich muss alles lokal ablegen - dann gehts :( Das gleiche mit den Pear Sachen.

Hat jemand einen Tipp ?

Gruss

  1. Hello,

    ich habe in der PHP.ini folgenden include_path:

    .:.:/usr/share/php5:/usr/share/php5/PEAR

    ^ ^

    Lokales Verzeichnis ist doppelt angegeben. Das kostet im Zweifelsfall nur Zeit.

    In /usr/share/php5/Zend liegt z.B. mein Zend-Framework.

    Aber im Pfad ist es nicht angegeben

    .:/usr/share/php5/Zend:/usr/share/php5:/usr/share/php5/PEAR

    Wenn ich Zend/Sonstwas.php includen will kommt die Meldung dass er nichts gefunden hat. Ich muss alles lokal ablegen - dann gehts :( Das gleiche mit den Pear Sachen.

    Hat jemand einen Tipp ?

    Lass Dir den effektiven Include-Path mal in einem betroffenen Script ausgeben.

    echo htmlspecialchars(ini_get('include_path'));

    oder http://www.php.net/manual/de/function.get-include-path.php

    echo htmlspecialchars(get_include_path());

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. echo $begrüßung;

    In /usr/share/php5/Zend liegt z.B. mein Zend-Framework.

    Um die Frage konkret beantworten zu können, müsste man wissen, wie genau die Dateien da drin liegen? Wie lautet beispielsweise der vollständige Pfad zur Config.php?

    Wenn ich Zend/Sonstwas.php includen will kommt die Meldung dass er nichts gefunden hat. Ich muss alles lokal ablegen - dann gehts :(

    Hat jemand einen Tipp ?

    Das Archiv des Zend Frameworks enthält ein Verzeichnis library. Darin befindet sich Zend in dem alles andere liegt. Der Include-Path muss auf library zeigen. library kann auch wegbleiben, dann musst du auf das Verzeichnis zeigen, in dem Zend liegt, aber nicht auf Zend selbst.
    Wenn eine Datei des Frameworks eine andere inkludiert, dann macht es das immer mit Zend/Foobar.php, weswegen du nicht auf Zend sondern das Verzeichnis davor zeigen musst.

    Hintergrund ist, dass du bei Bedarf Erweiterungen vornehmen kannst, die aber einen anderen Namensraum bekommen sollen. Du legst dann also neben Zend noch das Verzeichnis Achim und kannst dann mit require_once 'Achim/MeinZeug.php'; zugreifen.

    Das gleiche mit den Pear Sachen.

    Für PEAR muss der Include-Path auf das Verzeichnis mit der PEAR.php zeigen.

    echo "$verabschiedung $name";