PHP Display error

Coopar

Grünschnabel
Hallo,

ich habe ein Problem mit PHP und evtl. mySQLi.
Ich habe eine index.php in der am Anfang einige include_once-Befehle kommen.

Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include_once 'inc/variables.php';
include_once 'inc/validator.php';
include_once 'inc/user.php';
include_once 'inc/config.php';
include_once 'inc/logger.php';
include_once 'inc/invite.php';
include_once 'inc/message.php';
include_once 'inc/team.php';
include_once 'inc/mail.php';
include_once 'templates/html_functions.php';
?>

Das resultiert leider darin, dass Quellcode aus einigen der PHP-Dateien angezeigt wird.
Wenn ich mir den Quelltext anzeigen lasse, so sieht das wie im Anhang (st2.png) aus.

Interessant ist hier die Farbgebung. Der schwarze Code wird ausgegeben.

Wo kann hier das Problem liegen?
Kann das an mySQLi liegen?

Ich arbeite mit WAMP 2.1, Apache 2.2.17, PHP 5.3.4 und mySQL 5.1.53

Danke und Gruß
Constantin
 

Anhänge

  • st2.PNG
    st2.PNG
    14,3 KB · Aufrufe: 14
Also auch wenn ich lange nichts mehr mit PHP zu tun hatte verrät mir das Syntax-Highlighting das hier irgendwas nicht stimmt. Außerdem stimmen deine PHP-Tags nicht. Es muss so aussehen :
PHP:
<?php
//code
?>
Vermutlich daher die Fehlfunktion und das sehr merkwürdige Syntax-Highlighting.
Es kann aber auch an einem OOP-Fehler liegen.

PS : musste dieses "Herumgemale" mit PAINT wirklich sein ? Es sind
1) keine sicherheitsrelevanten Daten
2) hätte man es für den Screenshot auch im Source löschen können
 
Außerdem stimmen deine PHP-Tags nicht. Es muss so aussehen :
PHP:
<?php
//code
?>
Das sind die sogenannten short open tags. Allerdings sind die "kompletten" zu empfehlen, wenn der Zugriff auf die php.ini oder das Setzen dieser Option nicht garantiert ist.

Das resultiert leider darin, dass Quellcode aus einigen der PHP-Dateien angezeigt wird.
Vielleicht werden einige Skripte komischerweise nicht als PHP verarbeitet, sondern nur ausgegeben (wie HTML).
 
Hallo,

vielen Dank!
Das hat auf jeden Fall geholfen.

Nun aber noch eine Frage zu der php.ini. Wo dort muss ich diese Short Open Tags aktivieren?

Danke und Gruß
Coopar

PS:
PS : musste dieses "Herumgemale" mit PAINT wirklich sein ? Es sind
1) keine sicherheitsrelevanten Daten
2) hätte man es für den Screenshot auch im Source löschen können

Ja, ich hätte das rausnehmen können. Sichtbar soll es nicht sein, da es sich dabei um den Namen eines Kumpel handelt, mit dem ich zusammen an dem Projekt arbeite. Diesen wollte ich nicht veröffentlichen.
 
Suche in der php.ini nach dem Begriff short_open_tag (Zeile darf nicht mit einem Semikolon beginnen!) und setze den Wert auf 'On':
Code:
short_open_tag = On
Hinweis: Alle Zeilen, die mit einem Semikolon (;) beginnen, sind Kommentare.
 
Genau solche Fehlfunktionen sind es wesswegen es in solchen Scriptsprachen Konventionsgemäß unmöglich gemacht werden sollte das es überhaupt sowas wie "short tags" gibt. Auch schönes Beispiel ist ja JavaScript : fehlt das Semikolon am Ende ist das soweit erstmal nicht tragisch so lange der Interpreter das Anweisungsende feststellen kann.
 
Das Problem ist (wie eigentlich immer) nicht bei der Sprache sondern beim Anwender zu suchen.
Den Anwender möglichst soweit einzuschränken,dass er Aufgrund minimaler Anzahl an Umsetzungsmöglichkeiten garantiert keine Fehler mehr machen kann ist sicher auch nicht die ultima ratio.
 
Natürlich hast du recht und so manches Mal gehen mir die Konventionen auch auf die Nerven *gerade bei Java wo der Compiler ja gleich alles bemängelt wenn bei der Deklaration nur ein Buchstabe fehlt* ... aber man sieht das es einem das Leben vereinfachen kann wenn es für bestimmte Dinge nur eine Möglichkeit gibt. Sowas wie Short-Tags kann ja jeder haben wie er will. Auch kann man sich bei PHP nicht auf Dinge wie ini_set() verlassen da diese Funktion unter Umständen blockiert sein kann. Also wird man quasi schon dadurch dazu gezwungen immer die normalen Tags zu verwenden.
Auch register_globals ist ein schönes Beispiel : in den meisten Anfänger-Büchern und -Tutorials wird davon ausgegangen das register_globals ON ist ... was aber weder bei einer frischen Installation von PHP noch auf den meisten Hostern der Fall ist was wiederum zu sehr vielen Threads in unzäligen Foren führt nur weil dies nirgends erwähnt wird.
 
Zurück