require erkennt dateien die mit f beginnen nicht

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

require erkennt dateien die mit f beginnen nicht

Postby sherlok11 » 20. January 2012 20:09

hallo,

mein Problem ist folgendes. Ich habe eine Datei namens footer.php die ich mittels require-Befehl einbinden möchte. Konkret sieht das so aus:

<?php
require(".\_includes\pageElements\footer.inc");
?>

unter php4 funktioniert es einwandfrei, unter php5 gibt es folgende Fehlermeldung:

Warning: require(.\_includes\pageElements ooter.inc) [function.require]: failed to open stream: Invalid argument in C:\xampp\htdocs\css schuch\index.php on line 20

Fatal error: require() [function.require]: Failed opening required '.\_includes\pageElements ooter.inc' (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\css schuch\index.php on line 20

Wenn man sich den folgenden Teil der Fehlermeldung einmal anschaut (.\_includes\pageElements ooter.inc) stellt man fest, dass das f in footer nicht erkannt wird. Hinter Elements steht
nur ooter. Das f scheint aber der einzige Buchstabe zu sein, der nicht erkannt wird, da es bei Änderung des Anfangsbuchstaben (z.B. phooter) problemlos funktioniert. Da ich nun aber eine ganze
Menge verschiedener Web-sites verwalte, die größtenteils auch online sind, ist es unpraktikabel bei allen den dateinamen und die entsprechenden links zu ändern. Hat jemand ähnliche Probleme
oder einen Lösungsvorschlag?
sherlok11
 
Posts: 2
Joined: 20. January 2012 20:08
Operating System: xp

Re: require erkennt dateien die mit f beginnen nicht

Postby Altrea » 20. January 2012 22:23

Hallo sherlok11,

Du hast da einen richtigen Glückstreffer gelandet.
Denn damit dieses Verhalten zu so einem Fehler führt, müssen gleich zwei Dinge zusammenkommen.

Zum einen verwendest du in den Pfadangaben Backslashes statt Slashes. Da du sicher fast nur mit Windows Pfadangaben arbeitest, bist du das sicher so gewohnt. PHP kümmert sich aber (bis auf ein paar wenige Ausnahmen) nicht um Windows Syntax. Im Gegenteil ist es sogar empfehlenswerter, überall dort wo man es kann Slashes zu verwenden statt Backslashes.
Backslashes würde ich überhaupt garnicht verwenden. Benötigst du bei PHP auf Windows wirklich einmal den Backslash in Pfadangaben, verwende die vordefinierte Konstante DIRECTORY_SEPARATOR.

Zum zweiten verwendest du doppelte Anführungszeichen. Diese bieten zwar den charmanten Vorteil, dass man relativ einfach variablen verwenden kann, weil diese in dem String direkt geparst werden, dies gilt aber genauso auch für Steuerzeichen - und das ist es, was dir passiert ist.
Eine Auflistung der escape Sequenzen gibt es zum Beispiel hier

Dass \p und \_ funktioniert ist in deinem Fall purer Zufall. Gäbe es dafür auch Steuerzeichen, würden auch diese Zeichen nicht funktionieren.

Noch ein letzter Tipp: include() und require() sind Sprachkonstrukte. Man kann zwar die Schreibweise verwenden als wären sie Funktionen (also mit runden Klammern), richtiger wäre es aber sie ohne zu schreiben. Beides funktioniert, es ist also Geschmackssache.
Code: Select all
require '/_includes/pageElements/footer.inc';


mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 8299
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 14 guests