Probleme beim Includen über absoluten Pfad
Nad Flanders
- php
0 ChrisB0 Nad Flanders0 ChrisB0 Nad Flanders0 Nad Flanders0 dedlfix0 Nad Flanders0 dedlfix
0 dedlfix
Aloa,
aufgrund der Tatsache, dass ich Seiten auf dem Server verschiebe, include ich alle Includes mit einer absoluten Url.
Zum Ändern der Styles nutze ich einen Styleswitcher
<?php
$stylefile = "header";
$stylefile .= $style;
$stylefile .= ".php";
include $stylefile;
?>
Diese Script würde ich nun auch ganz gerne über eine absolute Pfadangabe einbinden, bekomme hier jedoch folgenden Fehler:
Warning: include(http://www.xyz.de/Styleswitcher/header.php) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /kunde....
sowie:
Failed opening 'http://www.xyz.de/Styleswitcher/header.php' for inclusion (include_path='.:/usr/local/lib/php') in....
Kann mir da vielleicht Jemand weiterhelfen?
Lg,
Nad
Hi,
Warning: include(http://www.xyz.de/Styleswitcher/header.php) [function.include]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /kunde....
Dann schau im Log des Webservers der Domain, von der du die Ressource anforderst nach, warum dieser einen 500 Internal Server Error meldet.
MfG ChrisB
Hi,
das Problem ist, dass Log files schreiben bis eben nicht aktiviert war. Ich habe es jetzt aktiviert, den fehler nochmals provoziert, in der Hoffnung, dass sich daraufhin eine Logdatei anlegt....ERROR.
Ich kann sie nicht finden, bzw. existiert sie nicht. Gibt es vielleicht noch eine andere Möglichkeit?
LGN
Hi,
das Problem ist, dass Log files schreiben bis eben nicht aktiviert war. Ich habe es jetzt aktiviert, den fehler nochmals provoziert, in der Hoffnung, dass sich daraufhin eine Logdatei anlegt....ERROR.
Ich kann sie nicht finden, bzw. existiert sie nicht. Gibt es vielleicht noch eine andere Möglichkeit?
Nein.
Wenn der Server dir einen 500 Internal Server Error meldet, kann auch nur der Server dir sagen, warum dieser auftrat.
Btw: Du schaust aber schon auf dem *richtigen* Server, ja?
MfG ChrisB
Btw: Du schaust aber schon auf dem *richtigen* Server, ja?
yep.
Problem gelöst:
<?php
$stylefile = "header";
$stylefile .= $style;
$stylefile .= ".php";
include $stylefile;
?>
include $stylefile; war der Fehler und so ist es richtig:
include_once($stylefile);
LGN
echo $begrüßung;
include $stylefile; war der Fehler und so ist es richtig:
include_once($stylefile);
Das glaub ich dir nicht. include und include_once sind beides Sprachkonstrukte und keine Funktionen. Klammern um das Argument ergeben keinen Unterschied in der Ausführung. Und ein include_once löst nur dann ein Problem, das man mit include hat, wenn Funktions- oder Klassennamen mehrfach zu inkludieren versucht werden.
echo "$verabschiedung $name";
Hi,
hier die Mail vom Provider:
Wir haben uns Ihre Dateien und die Fehlermeldung noch einmal angesehen
und festgestellt, das beim include über http:// ein Fehler 500 auftritt.
Wenn Sie die header.php alleine ohne irgendwelche Parameter aufrufen, so
entsteht der Fehler 500.
Wir haben zudem festgestellt, das die Variable $stylefile immer nur
header.php beinhaltet, welche aber in einer sehr langen oder
Endlosschleife entsteht.
Wenn Sie in der Styleswitcher/header.php einmal statt nur
include $stylefile;
einen "include_once($stylefile);" verwenden, so wird die Datei nur
einmal includiert und nicht immer wieder, wenn diese bereits geladen wurde.
Damit können Sie den Fehler 500 beheben und wieder über
http://*****/Styleswitcher/header.php die Datei
includieren.
vielleicht erklärt die mehr.
Grüße
echo $begrüßung;
hier die Mail vom Provider:
[...]
vielleicht erklärt die mehr.
Nicht wirklich. Wodurch entsteht denn der 500er? Es klingt nach einem Ressourcenproblem. Entweder wird aufgrund der Programmierung zu viel Speicher oder zu viel Zeit verbraucht und daraufhin das Script abgebrochen, was dann der Webserver mit dem 500er an den Client meldet. Das include_once beseitigt nach meiner Vermutung nicht die Ursache sondern lindert nur ihre Auswirkungen.
echo "$verabschiedung $name";
echo $begrüßung;
aufgrund der Tatsache, dass ich Seiten auf dem Server verschiebe, include ich alle Includes mit einer absoluten Url.
Normalerweise inkludiert man über das Filesystem und nicht über HTTP, wenn man sich keine grobe Sicherheitslücke einhandeln will. Außerdem bekommt man im Allgemeinen von einem anderen Server ein Ergebnis und keinen PHP-Quellcode, wenn dort PHP konfiguriert ist. Is es wirklich dein Ziel etwas per HTTP zu inkludieren?
echo "$verabschiedung $name";