Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Gelöst: PHP: include bringt weder Fehler noch macht er

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
TheRob
PostRank 5
PostRank 5
Beiträge: 274
Registriert: 10.06.2008, 11:44
Wohnort: Wetzikon

Beitrag von TheRob » 30.08.2008, 19:54

Hallo und guten Abend
Nachdem ich nun seit 2 Stunden probiere, in Foren lese etc. jetzt mal an euch die Frage. Vllt. bin ich nur betriebsblind.
Ausgang:
Ich lade in einer Seite via AJAX eine andere Seite nach. Da das jedoch nicht unbedingt toll ist für G00gle würde ich gerne diese via include "fest" reinholen.

Problem: er macht nix

Ordnerstruktur:

./
index.php

./site/
content.php

./functions/
contentfromdb.php


die index.php included die content.php und die content.php soll die contentfromdb.php includen.

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');

Aber es kommt kein Fehler, abe er macht auch nichts...

Habt ihr eine Idee?

Vielen Dank
Gruss Robert
Zuletzt geändert von TheRob am 30.08.2008, 20:24, insgesamt 1-mal geändert.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

huah
PostRank 6
PostRank 6
Beiträge: 429
Registriert: 19.04.2007, 21:56

Beitrag von huah » 30.08.2008, 20:11

Hast Du es schon mit dem absoluten Pfad versucht?

Code: Alles auswählen

echo (htmlentities($DOCUMENT_ROOT));
Oder sind vielleicht keine Leserechte vergeben - kannst Du die Dateien direkt aufrufen?

TheRob
PostRank 5
PostRank 5
Beiträge: 274
Registriert: 10.06.2008, 11:44
Wohnort: Wetzikon

Beitrag von TheRob » 30.08.2008, 20:24

Hallo huah
Danke für deine Antwort!

Aber nach 3 Zigaretten, 05,Liter Cola und nem schluck wein die richtige Idee woran es liegen könnte.
Dokumentiert isses hier
https://www.joomlaportal.de/geloeste-th ... abled.html

Danke und Gruss
Rob

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 31.08.2008, 09:32

TheRob hat geschrieben:Dokumentiert isses hier
https://www.joomlaportal.de/geloeste-th ... abled.html
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().
Zuletzt geändert von Mork vom Ork am 31.08.2008, 09:44, insgesamt 1-mal geändert.

TheRob
PostRank 5
PostRank 5
Beiträge: 274
Registriert: 10.06.2008, 11:44
Wohnort: Wetzikon

Beitrag von TheRob » 31.08.2008, 09:39

Morgen Mork
Danke für die ausführliche Antwort.
Also zuerst: Anfänger bin ich nicht mehr, nurmanchmal Betriebsblindes Huhn :-)
Soweit alles nachvollziehbar, die Lösung mit
include($_SERVER["DOCUMENT_ROOT"] . 'function/contentfromdb.php');
geht leider auch nicht. Werde dies aber nochmal probieren wenn es online ist. Derzeit ja nur lokal via XAMPP, da schliesse ich icht aus das da etwas falsch konfiguriert ist.

Zu den Sicherheitsbedenken: Auf jeder einzelnen Funktion/ Seite ist eine Abfrage wo der Aufruf herkommt und ob der Nutzer (via Session ID und Login Daten) berehtigt ist die Funktion auszuführen. Dies vorallem auch, da ich auch viele Seiten via Ajax zugreife und da ja auch der Pfad zu sehen ist und theoretisch manipulierbar.

Gruss Rob

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 31.08.2008, 09:46

TheRob hat geschrieben:die Lösung mit
include($_SERVER["DOCUMENT_ROOT"] . 'function/contentfromdb.php');
geht leider auch nicht.
Das wundert mich jetzt aber. Schau doch mal, was bei

echo $_SERVER["DOCUMENT_ROOT"] . 'function/contentfromdb.php';
phpinfo(INFO_VARIABLES);

rauskommt.

TheRob
PostRank 5
PostRank 5
Beiträge: 274
Registriert: 10.06.2008, 11:44
Wohnort: Wetzikon

Beitrag von TheRob » 31.08.2008, 09:50

Da kommt der lokale Windows Pfad zum htdocs des Apache. Vermte das er dann auf irgendwelchen Gründen den PHP-Parser nicht anschmeisst.
Aber werde es wenn alles mit Design/ Funktionen "fertig" ist online stellen und vor veröffentlichung checken ob es die andere Methode gibt.
Was mich jedoch wundert ist, dass Allow_url_include bei Strato, Hosteurope etc. überall ON ist. Naja.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag