PHP-Code wird nicht kompiliert

tluebke

Mitglied
Ich habe ein Problem mit einem Code-Schnipsel.
Das Problem ist, dass der Code erst seit der Neuinstallation von xampp 1.7.3 unter Windows 7 aufgetreten ist. Vorher unter XP (xampp-version weiß ich leider nicht) funktionierte alles einwandfrei.

bei folgendem code...
PHP:
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
        login($userid);
    else {
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in()) {
  include 'login_form.php';
  }
else {
include '_menu.php';
echo '<div align="center"><br>Sie haben sich erfolgreich eingeloggt.</div>';
}
?>
</body>
</html>

... wird der gesamte Code auch im Quelltext angezeigt. und im Browser selbst wird folgendes angezeigt
Code:
Sie haben sich erfolgreich eingeloggt.'; } ?>

Ich habe schon alles durchgesucht, aber nichts gefunden. Könnte der Fehler eventuell auch in einer Datei liegen, die durch "include" aufgerufen wird? Eventuell fehlt da eine Klammer oder so. Wäre das möglich?
Finde es nur merkwürdig, dass der Fehler erst jetzt auftritt.

Danke für Eure Antworten.
 
Zuletzt bearbeitet:
Welchen Dateiendung hat die Datei?

Spontan würde ich sagen, dass PHP nicht interpretiert wird.
Mögliche Gründe:
PHP läuft nicht.
PHP ist nicht richtig konfiguriert.
Falsche Dateiendung und Apache spricht PHP nicht an.
 
- Also die Datei heißt login.php. Alle anderen Datein haben auch die Endung .php. Daran sollte es also nicht liegen.
PHP muss laufen, da die Dateien im Verzeichnis drunter alle super laufen. Auch mit korrekter DB-Anbindung. Habe auch schon andere Verzeichnisse ausprobiert, es muss also an der Datei oder den anderen liegen.

Habe jetzt nochmal alle eingebundenen Dateien nach Klammer-Fehlern oder sonstigem Quark durchsucht, aber nichts gefunden.

Ich bin so langsam Ende mit meinem Latein, aber ich weiß auch, wie schwer so eine Ferndiagnose ist.
 
Eine wilde Vermutung:

Ersetze
PHP:
<?

durch

PHP:
<?php

Ich sehe gerade, dass XAMPP standardmäßig short_open_tag auf off hat.
 
OK, jetzt bekomme ich imemrhin eine Fehlermeldung.

"Parse error: syntax error, unexpected $end in D:\x\x\x\index.php on line 21"

Zeile 21 ist die mit dem HTML-End-Tag.

Ich glaube ich muss da nochmal etwas rumforsten. Danke erstmal für den Anhaltspunkt, jetzt komme ich bestimmt dem Fehler auf die Schliche. Mache ich also die "or die(mysql_error()"-Methode...
 
Dir fehlt ein } vor dem ersten else ODER du hast ein { nach dem ersten else zuviel.
Je nachdem, ob das else zu dem if ($userid!=false) oder zum if (isset($_POST['login'])) gehört.
 
Oh. Danke für das scharfe Auge. Nun zeigt er mir auch endlich ein paar Fehler an. Er meckert über Zeile 3. Da muss ich nochmal draufschauen. Was mich aber etwas verwundert ist, wie er mir den Fehler anzeigt:


"Warning: include(1) [function.include]: failed to open stream: No such file or directory in D:\x\x\x\index.php on line 3

Warning: include() [function.include]: Failed opening '1' for inclusion (include_path='.;D:\x\xampp\php\PEAR') in D:\x\x\x\index.php on line 3"

Die Datei existiert!
Irgendwie scheint er das nicht so wirklich zu können. Aber wie gesagt: Sonst klappt das auch.
Ich bin glaub ich einfach zu doof dafür.
 
Liegt die Datei sessionhelpers.inc.php denn auch im selben Verzeichnis, wie die Datei, die du im Browser aufrufst?
include-Pfade inkludieren relativ zum aufgerufenen PHP-Skript - außer du inkludierst mit absoluten Pfaden.

Dafür könntest du dir eine kleine Config-Datei schreiben, in der der Pfad zum Projekt in eine Variable geschrieben wird und diese Datei einbinden -
dann kannst du die Datei über
PHP:
include($projectPath."sessionhelpers.inc.php");
inkludieren.
 
Ja, die Datei liegt im gleichen Verzeichnis. Und im Unterverzeichnis funktioniert das include auch mit relativer Pfadangabe. Ihn wird wohl irgendwas anderes stören. Ich habe auch schon gegoogelt, bin aber genauso schlau wie vorher.

Edit: Also, ich habe so einiges ausprobiert. Ss liegt wohl wirklich daran, dass er den "include"-Befehl nicht versteht.
Wenn ich den Code aus der "sessionhelpers.inc.php" direkt in den Quelltext einfüge, meckert er nicht, aber dafür dann über den nächsten "include"-Befehl. Da ist dann die Fehlermeldung die selbe wie oben, nur dass sich nun Dateiname und Zeilennumer verändern.
Aber wie gesagt, im Verzeichnis drunter klappt alles wunderbar. Und es ist auch egal, wo die Dateien liegen, es hat keinen Einfluss.
 
Zuletzt bearbeitet:
Zurück