Warum kriege ich diesen PHP Fehler?

...komplette Frage anzeigen

3 Antworten

Da wird etwas falsch interpretiert in:

define( "CLASS_PATH", "C:\\\\xampp\\\\htdocs\\\\cms\\\\classes" );

Benutze da besser Single Quotes, in Double Quotes wird der Inhalt nochmal ausgewertet, und weil der Backslash ein "escape"-Zeichen ist wird dort dann aus dem "\\\\xa" ein Leerzeichen (oder anderes, nicht sichtbares, Sonderzeichen, kenne die grad nicht auswendig).

Also so:

define('CLASS_PATH', 'C:\\\\xampp\\\\htdocs\\\\cms\\\\classes');

Ist btw finde ich sowieso die "schönere" Variante, und man geht eben sicher, dass das in den Quotes "wörtlich" genommen wird.

Hier ist das Problem auch nochmal etwas näher erklärt: 
http://stackoverflow.com/questions/24847523/why-does-xa-not-appear-when-outputting-echo-c-xampp-htdocs-practice-myonlin

Und allgemein zum Unterschied Single vs Double Quotes: 
http://www.linuxcommand.org/wss0060.php

Antwort bewerten Vielen Dank für Deine Bewertung
lutzxs 03.07.2016, 03:05

Danke mein CMS funktioniert jetzt .. soo und jetzt Setz ich mich mal an ein tolles CSS Design :D

0

Moin,
Dei Problem liegt darin, dass Backslashes in Strings die in doppelte Anführungszeichen gesetzt sind als Escapesequenzen interpretiert werden, \\\\x ist zum Beispiel eine davon.
Die Fehler sind in folgenden Zeilen.

define( "CLASS_PATH", "C:\\\\xampp\\\\htdocs\\\\cms\\\\classes" );
define( "TEMPLATE_PATH", "C:\\\\xampp\\\\htdocs\\\\cms\\\\templates" );

Um den String nun richtig auszuwerten gibt es folgende Möglichkeiten.
Entweder Du setzt vor jedem \\\\ ein anführendes \\\\, praktisch so

define( "CLASS_PATH", "C:\\\\\\\\xampp\\\\\\\\htdocs\\\\\\\\cms\\\\\\\\classes" );
define( "TEMPLATE_PATH", "C:\\\\\\\\xampp\\\\\\\\htdocs\\\\\\\\cms\\\\\\\\templates" );

oder Du Packst die Zeichenkette in einfache Anführungszeichen '

define( "CLASS_PATH", 'C:\\\\xampp\\\\htdocs\\\\cms\\\\classes' );
define( "TEMPLATE_PATH", 'C:\\\\xampp\\\\htdocs\\\\cms\\\\templates' );


Weitere Informationen dazu findest Du in der PHP-Dokumentation unter http://php.net

Gruß: Holger


Antwort bewerten Vielen Dank für Deine Bewertung
lutzxs 03.07.2016, 03:07

Auch dir danke der Beste Antwort Stern geht aber leider an masterma666 einfach weil er früher geantwortet hat :/ Aber trotzdem danke :D

0
TanteHolger 03.07.2016, 03:15
@lutzxs

Null Problemo und viel Erfolg mit Deinem Vorhaben und beim Lernen. =)

0

Du kannst Composer nutzen, um deine Klassen automatisch zu laden ohne mehrere require/include einzusetzen: https://getcomposer.org/

<?php

require __DIR__ . '/vendor/autoload.php';

Zu deinen Pfaden, mach es besser so:

<?php // index.php

define('BASE_PATH', __DIR__);

require BASE_PATH.'/cms/config.php';
// Ein normaler Server hat KEIN C-Laufwerk...

require BASE_PATH.'/vendor/autoload.php';
<?php // config.php

define('CLASS_PATH', BASE_PATH.'/classes');
// ...

Bevor du dich an ein eigenes CMS traust, solltest du dir unbedingt ein CMS zuerst mal anschauen. Die Auswahl ist Groß. Wordpress, Laravel, etc pp...

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?