## include

(PHP 4, PHP 5, PHP 7, PHP 8)

Der Ausdruck `include` bindet die angegebene Datei ein und wertet sie aus.

Die folgende Dokumentation trifft auch auf require zu.

Dateien werden unter dem angegebenen Pfad gesucht oder, wenn keiner gegeben ist, im include_path. Wenn die Datei auch im include_path nicht gefunden werden kann, sucht `include` noch im Verzeichnis der aufrufenden Datei und im aktuellen Arbeitsverzeichnis. Wenn keine Datei gefunden wurde, erzeugt `include` einen Fehler der Stufe `E_WARNING`; im Gegensatz dazu erzeugt require in diesem Fall einen Fehler der Stufe `E_ERROR`.

Beachten Sie, dass sowohl `include` als auch `require` zusätzliche `E_WARNING`s auslösen, wenn nicht auf die Datei zugegriffen werden kann, bevor sie das endgültige `E_WARNING` bzw. `E_ERROR` auslösen.

Wenn ein Pfad angegeben ist — ob absolut (beginnend mit einem Laufwerksbuchstaben oder `\` auf Windows oder `/` auf Unix/Linux) oder relativ (beginnend mit `.` oder `..`), wird der include_path ignoriert. Wenn der Dateiname beispielsweise mit `../` beginnt, sucht der Parser im übergeordneten Verzeichnis des aktuellen Arbeitsverzeichnisses nach der Datei.

Mehr Informationen über den Umgang PHPs mit dem Einbinden von Dateien im Zusammenhang mit dem Include-Pfad, siehe die Dokumentation zu include_path.

Wenn eine Datei eingebunden wird, wird für den enthaltenen Code der Geltungsbereich für Variablen übernommen, der in der Zeile mit dem include-Befehl gilt. Alle Variablen, die in dieser Zeile in der aufrufenden Datei verfügbar sind, stehen ab diesem Zeitpunkt auch in der aufgerufenen Datei zur Verfügung. Hingegen haben alle Funktionen und Klassen, die in der eingebundenen Datei definiert sind, den globalen Geltungsbereich.

Beispiel #1 Grundlegendes `include`-Beispiel

    vars.php
    <?php

    $farbe = 'grün';
    $frucht = 'Apfel';

    ?>

    test.php
    <?php

    echo "Der $frucht ist $farbe."; // Der  ist  .

    include 'vars.php';

    echo "Der $frucht ist $farbe"; // Der Apfel ist grün

    ?>

Wenn include innerhalb einer Funktion aufgerufen wird, verhält sich der gesamte Code aus der aufgerufenen Datei wie wenn er in der Funktion stünde. Folglich hat er denselben Variablen-Gültigkeitsbereich wie diese Funktion. Eine Ausnahme von dieser Regel sind magische Konstanten, die geparst werden, bevor die Einbindung durchgeführt wird.

Beispiel #2 Include in Funktionen

    <?php

    function foo()
    {
        global $farbe;

        include 'vars.php';

        echo "Der $frucht ist $farbe.";
    }

    /* vars.php ist im Gültigkeitsbereich von foo(),  *
     * sodass $frucht außerhalb von diesem Bereich    *
     * nicht verfügbar ist. $farbe ist auch außerhalb *
     * verfügbar, weil es als global deklariert ist.  */

    foo();                            // Der Apfel ist grün.
    echo "Der $frucht ist $farbe.";   // Der  ist grün.

    ?>

Wenn eine Datei eingebunden wird, wechselt der Parser am Anfang der eingebundenen Datei in den HTML-Modus und am Ende wieder in den PHP-Modus. Aus diesem Grund muss jeder PHP-Code in der eingebundenen Datei mit gültigen PHP-Start- und -Endtags umschlossen sein.

Wenn "include-URL-Wrapper" aktiviert sind (was sie in der Standard-Konfiguration sind), kann die einzubindende Datei mit einer URL (über HTTP oder ein anderes unterstütztes Protokoll - siehe Unterstützte Protokolle und Wrapper für eine Liste unterstützter Protokolle) anstatt eines lokalen Pfades eingebunden werden. Wenn der Zielserver die Zieldatei als PHP-Code interpretiert, können Variablen an die einzubindende Datei mithilfe von HTTP-GET-Query-Strings übergeben werden, obwohl dies nicht dasselbe ist, wie wenn man die Datei einbindet und sie den Variablenbereich übernimmt; das Skript läuft weiterhin auf dem entfernten Server und das Ergebnis wird in das lokale Skript eingebunden.

Beispiel #3 `include` über HTTP

    <?php

    /* Dieses Beispiel setzt voraus, dass www.example.com konfiguriert ist, *
     * .php-Dateien als PHP-Skripte zu interpretieren und .txt-Dateien      *
     * nicht. Des Weiteren meint 'Funktioniert' hier, dass die Variablen    *
     * $foo und $bar innerhalb der eingebundenen Datei verfügbar sind.      */

    // Funktioniert nicht; file.txt wird von www.example.com nicht als PHP interpretiert
    include 'http://www.example.com/file.txt?foo=1&bar=2';

    // Funktioniert nicht; hier wird nach einer Datei mit dem Namen
    // 'file.php?foo=1&bar=2' im lokalen Dateisystem gesucht.
    include 'file.php?foo=1&bar=2';

    // Funktioniert
    include 'http://www.example.com/file.php?foo=1&bar=2';
    ?>

Warnung

# Sicherheits-Warnung

Die entfernte Datei mag vom entfernten Server (je nach Konfiguration) geparst werden oder nicht, aber sie muss weiterhin ein gültiges PHP-Skript ausgeben, weil die Ausgabe auf dem lokalen Server als PHP ausgeführt wird. Wenn die Datei vom entfernten Server dort verarbeitet und lokal nur ausgegeben werden soll, ist readfile() die bessere Wahl. Andernfalls muss sehr gut darauf Acht gegeben werden, sicherzustellen, dass das entfernte Skript gültigen und erwünschten Code ausgibt!

Siehe auch Entfernte Dateien, fopen() und file() für verwandte Informationen.

Umgang mit Rückgabewerten: `include` gibt im Fehlerfall `FALSE` zurück und und generiert eine Warnung. Erfolgreiches Einbinden, außer überschrieben durch die eingebundene Datei, gibt `1` zurück. Es ist möglich, in der eingebundenen Datei return aufzurufen um den Ablauf dieser Datei abzubrechen und zu dem einbindenden Skript zurückzukehren. Der zurückgegebene Wert kann als Rückgabewert des include-Aufrufs abgefragt werden, wie bei einer normalen Funktion. Dies ist beim Einbinden entfernter Dateien nur möglich, wenn die entfernte Datei mit gültigen PHP Start- und Endtags umschlossen ist (wie bei jeder lokalen Datei). Die benötigten Variablen können innerhalb dieser Tags deklariert werden und sie werden an dem Punkt, an dem die Datei eingebunden wird, verfügbar.

Weil `include` eine spezielles Sprachkonstrukt ist, sind die Klammern um das Argument optional. Beim Vergleichen des Rückgabewerts muss allerdings aufgepasst werden (siehe Beispiel).

Beispiel #4 Vergleichen des Rückgabewerts von include

    <?php
    // funktioniert nicht, wird als include(('vars.php') == TRUE) behandelt
    // also als include('1')
    if (include('vars.php') == TRUE) {
        echo 'OK';
    }

    // funktioniert
    if ((include 'vars.php') == TRUE) {
        echo 'OK';
    }
    ?>

Beispiel #5 `include` und return

    return.php
    <?php

    $var = 'PHP';

    return $var;

    ?>

    noreturn.php
    <?php

    $var = 'PHP';

    ?>

    testreturns.php
    <?php

    $foo = include 'return.php';

    echo $foo; // gibt 'PHP' aus

    $bar = include 'noreturn.php';

    echo $bar; // gibt 1 aus

    ?>

`$bar` hat den Wert `1`, weil das Einbinden erfolgreich war. Man beachte den Unterschied zwischen den obigen Beispielen: Die erste Datei nutzt return, was die andere nicht tut. Wenn das Einbinden fehlschlägt, wird `false` zurückgegeben und ein Fehler der Kategorie `E_WARNING` erzeugt.

Wenn in der eingebundenen Datei Funktionen definiert werden, können sie in der einbindenden Datei genutzt werden, unabhängig davon, ob sie vor oder nach return definiert werden. Wenn eine Datei zweimal eingebunden wird, erzeugt PHP einen fatalen Fehler, weil Funktionen bereits definiert wurden. Es wird empfohlen, include_once zu nutzen, anstatt zu überprüfen, ob die Datei bereits eingebunden wurde, und abhängig davon innerhalb der eingebundenen Datei zu handeln.

Ein anderer Weg, die Ausgabe eines eingebundenen Skriptes in eine Variable zu schreiben, ist, `include` mit den Funktionen zur Steuerung des Ausgabepuffers zu verwenden. Beispiel:

Beispiel #6 Nutzung des Ausgabepuffers um eine Datei in einen String aufzunehmen

    <?php
    $string = get_include_contents('somefile.php');

    function get_include_contents($filename) {
        if (is_file($filename)) {
            ob_start();
            include $filename;
            return ob_get_clean();
        }
        return false;
    }

    ?>

Um automatisch Dateien in Skripte einzubinden, siehe auch die Konfigurationsdirektiven auto_prepend_file und auto_append_file in der php.ini.

> Hinweis: Da dies ein Sprachkonstrukt und keine Funktion ist, können Sie dieses nicht mit Variablenfunktionen oder benannten Parametern verwenden.

Siehe auch require, require_once, include_once, get_included_files(), readfile(), virtual(), und include_path.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open