Es funktioniert zwar wohl jetzt mittels der URL, aber die Daten über das Netzwerk einzufügen, halte ich für die mit Abstand schlechteste aller Möglichkeiten, kein Wunder, dass sie unter „Anfänger“ gepostet wurde … Das ist, als wenn du in der guten Stube sitzt, ein Glas aus deiner Küche holen möchtest und dazu das Haus durch die Eingangstür verlässt, nach hinten rumläufst, um dann durch die Gartentür in die Küche zu gehen (und natürlich den ganzen Weg auch wieder zurück).
Nix gegen Anfänger, jeder fängt mal an, aber du solltest dich damit nicht zufrieden geben. Also:
/site/
content.php
/functions/
contentfromdb.php
Probiert hab ich in der content.php folgendes:
include('./function/contentfromdb.php');
include('/function/contentfromdb.php');
include('function/contentfromdb.php');
include('
https://127.0.0.1/function/contentfromdb.php');
(Dass das Verzeichnis einmal functions heißt und einmal function, wird wohl ein Tippfehler sein.)
Keine der vier Möglichkeiten kann funktionien, drei davon sind schlicht falsch, die vierte hat das Netzwerkproblem, das du aber ja bereits selbst gelöst hast:
- include('./function/contentfromdb.php');
Der einzelne Punkt kennzeichnet das aktuelle Verzeichnis, /site/content.php sucht also nach /site/function/contentfromdb.php, nicht wie gewünscht nach /function/contentfromdb.php.
- include('/function/contentfromdb.php');
Der führende Schrägstrich kennzeichnet das Wurzelverzeichnis. Da include() sich aber auf das Dateisystem bezieht und nicht auf die URL, geht auch dies in die Hose, denn kein Webspace wird im Wurzelverzeichnis eines Servers gelagert (der Dateisystempfad zum Webspace steht in $_SERVER["DOCUMENT_ROOT"], wurde oben schon teilweise angesprochen).
- include('function/contentfromdb.php');
Gleiche Funktion wie erster Versuch, nur ohne den "aktuelles Verzeichnis"-Teil ./ am Anfang.
- include('https://127.0.0.1/function/contentfromdb.php');
Ist aus Sicherheitsgründen abgeschaltet. Lässt sich Code in das Skript einschleusen, ließe sich beliebiger Inhalt über die Skriptdomain verbreiten. Anders ausgedrückt: Du würdest unter deiner Domain Phishingseiten oder Viren hosten.
Davon unabhängig wird bei include() über das Netzwerk kein PHP-Code eingebunden, sondern eine Webseite. Es ist also insbesondere nicht möglich, Funktionen oder Variablen, die in einem per include('http…') eingebundenen Skript stecken, aufzurufen.
include() mit einer URL ist im Grunde nur dann zu gebrauchen, wenn man tatsächlich Daten von einem fremden Server durch den eigenen schleusen möchte. Für serverinterne Anfragen gibt es virtual() (siehe unten), für das tatsächliche Einbinden von PHP-Code reicht include() ohne Netzwerkfunktionalität.
Dein Problem lässt sich ohne Netzwerkfunktion auf diesen zwei Wegen lösen:
include($_SERVER["DOCUMENT_ROOT"] . 'function/contentfromdb.php');
oder
include('../function/contentfromdb.php');
Es gibt darüber hinaus noch eine Variante, die für deinen Fall (Ersatz von AJAX) vielleicht sogar passender ist:
virtual('/function/contentfromdb.php');
virtual() agiert wie include('
https://127.0.0.1/function/contentfromdb.php');, d.h. contentfromdb.php wird ausgeführt und seine Ausgabe in das aufrufende Skript eingefügt, allerdings wird hier nicht umständlich eine Netzwerkverbindung aufgebaut, sondern die Anfrage wird webserverintern abgearbeitet. Auf diese Weise ist es unter anderem auch möglich, SSI-Seiten oder CGI-Skripte in PHP einzubinden.
Aber es kommt kein Fehler, abe er macht auch nichts...
Auch im Fehlerprotokoll keine Meldung? Dass im Browser keine Fehler angezeigt werden, gehört so. include() bricht zudem auch nicht ab, wenn's die Datei nicht findet, das macht nur require().