php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.08.2010, 13:12  
Andreas L.
Gast
 
Beiträge: n/a
Standard Pfad mit realpath ermittelt existiert nicht...

Hi,

ich hole mir mit realpath() den absoluten Pfad zu einer Datei die ich relativ angebe. So weit ich das sehen kann ist der Pfad auch korrekt. Wenn ich nun diesen absoluten Pfad mit require_once() in die Seite einbinden möchte, erhalte ich folgende Meldung:

PHP-Code:
require_once("D:\CapSystems\web\ListProducts\3.0\includes\lpx-class-listproducts.php"); 
Zitat:

Warning: require_once() [function.require-once]: Unable to access D:\CapSystems\web\ListProducts.0\includes\lpx-class-listproducts.php in D:\CapSystems\web\ListProducts\3.0\includes\test-lp.php on line 14

Warning: require_once(D:\CapSystems\web\ListProducts.0\incl udes\lpx-class-listproducts.php) [function.require-once]: failed to open stream: No such file or directory in D:\CapSystems\web\ListProducts\3.0\includes\test-lp.php on line 14

Fatal error: require_once() [function.require]: Failed opening required 'D:\CapSystems\web\ListProducts.0\includes\lpx-class-listproducts.php' (include_path='.;D:\xampp\php\PEAR') in D:\CapSystems\web\ListProducts\3.0\includes\test-lp.php on line 14
So wird der Pfad ermittelt:
PHP-Code:
      $filename realpath('includes/lpx-class-listproducts.php'); 
Dieser Code befindet sich in lpx-class-listproducts.php in einer Public-Klassen-Methode. Die Klasse wird in einer Datei (generator.php in einem Verzeichnis weiter oben) instantiiert und die Methode aufgrufen.
Auch file_exists liefert false:
PHP-Code:
if(file_exists("D:\CapSystems\web\ListProducts\3.0\includes\lpx-class-listproducts.php")) {
  die(
'existiert');
} else {
  die(
'nee');

Die Datei existiert aber 100%ig.

Mein Document-Root ist: D:/CapSystems/web/
PHP-Code:
echo($_SERVER["DOCUMENT_ROOT"]); 
Wenn ich den Pfad wie folgt angebe, kommt die selbe Meldung wie oben:
Zitat:
ListProducts/3.0/includes/lpx-class-listproducts.php
/ListProducts/3.0/includes/lpx-class-listproducts.php
./ListProducts/3.0/includes/lpx-class-listproducts.php
ListProducts\3.0\includes\lpx-class-listproducts.php
etc...
Wo liegt das Problem?

Der Server ist das XAMPP-Rundum-Sorglos-Paket von apache-friends.org und läuft auf Windows Vista.

EDIT: Ich habe jetzt den Fehler gefunden: Der Pfad darf nicht in Anführungszeichen stehen, wenn ich die einfachen ' verwende, wird die Datei wunderbar eingebunden. Wie kann ich den Pfad so umwandeln, dass er auch mit Anführungszeichen ( " ) korrekt eingebunden werden kann?

EDIT2: Nicht gerade schön, funktioniert aber:
PHP-Code:
      $filename str_replace('\\''/'$filename); 
Schöne Grüße,
Andreas

Geändert von Andreas L. (10.08.2010 um 13:20 Uhr).
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.08.2010, 18:17  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 1.721
PHP-Kenntnisse:
Fortgeschritten
fab ist einfach richtig nettfab ist einfach richtig nettfab ist einfach richtig nettfab ist einfach richtig nett
Standard

Du könntest die Backslashes auch einfach ordentlich escapen:

PHP-Code:
 require_once("D:\\CapSystems\\web\\ListProducts\\3.0\\includes\\lpx-class-listproducts.php"); 
Gerade bei Strings in doppelten Anführungszeichen, in denen ja mehr Steuerzeichen erlaubt sind, ist das wichtig. Wobei ich mich frage, was du gegen einfache Anführungszeichen hast, ich sehe in deinem Code keinen Grund, doppelte zu benutzen.
fab ist offline   Mit Zitat antworten
Alt 12.08.2010, 18:52  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 469
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von fab Beitrag anzeigen
... Wobei ich mich frage, was du gegen einfache Anführungszeichen hast, ich sehe in deinem Code keinen Grund, doppelte zu benutzen.
Das liegt an dem alten Aberglauben, dass Windows nicht mit Forward-Slashes als Verzeichnistrennern umgehen könnte. Der stammt zwar aus grauer Vorzeit, als es noch Menschen gab, die mit der MS-DOS-Kommandozeile arbeiten mussten, hält sich aber bis heute.
__________________
Foreach ist auch eine Schleife!
fireweasel ist offline   Mit Zitat antworten
Alt 12.08.2010, 22:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.253
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Er redet von Quotes, nich von Slashes.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 12.08.2010, 23:21  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 469
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Er redet von Quotes, nich von Slashes.
Stimmt.
Aber auch beim Verwenden von Single-Quotes müssen manche Backslashes escaped werden. Das Beachten dieser Regeln spart man sich beim Verwenden von Forward-Slashes.
__________________
Foreach ist auch eine Schleife!
fireweasel ist offline   Mit Zitat antworten
Alt 12.08.2010, 23:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.253
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Aber auch beim Verwenden von Single-Quotes müssen manche Backslashes escaped werden
Eigentlich nur der Begrenzer selbst, also '.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 22.08.2010, 21:59  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 469
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Eigentlich nur der Begrenzer selbst, also '.
Und uneigentlich auch noch Backslashes vor "'", die nicht das Ende der Zeichenkette darstellen.

... warum sollte man sich solchen Unsinn merken, wenn man ihn einfach ignorieren kann?
__________________
Foreach ist auch eine Schleife!
fireweasel ist offline   Mit Zitat antworten
Alt 22.08.2010, 22:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.253
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
... warum sollte man sich solchen Unsinn merken, wenn man ihn einfach ignorieren kann?
Weil es besser ist, Sachen zu begreifen, statt sie sich einfach nur zu merken.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 28.08.2010, 23:21  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 469
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Weil es besser ist, Sachen zu begreifen, statt sie sich einfach nur zu merken.
Was willst du an spezifischen Escaping-Regeln, aufgestellt für lediglich einen bestimmten Parser, begreifen? Die kann man sich nur merken (also auswendig lernen). Hantiert man neben PHP noch mit anderen Sprachen, ist das hier "begriffene" Wissen wertlos, weil woanders andere und meiner (unerheblichen) Meinung nach oft konsistentere Regeln gelten.
__________________
Foreach ist auch eine Schleife!
fireweasel ist offline   Mit Zitat antworten
Alt 28.08.2010, 23:32  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.253
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Was willst du an spezifischen Escaping-Regeln, aufgestellt für lediglich einen bestimmten Parser, begreifen?
Auch falls Dir das nicht aufgefallen ist, gehorchen diese Escapings bestimmten Regeln.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] herausfinden ob ein bestimmter datensatz existiert. fisianer2009 PHP Tipps 2010 8 15.07.2010 15:09
Pfad auslesen von type=file in Safari Angins PHP Tipps 2010 12 01.07.2010 18:47
[Erledigt] Datei existiert, Zähler mit Schleife FloRic PHP Tipps 2009 2 12.01.2010 20:54
(.htaccess) AuthUserFile Pfad ermitteln!? BettinaSyn PHP Tipps 2009 6 19.05.2009 20:44
Pfad einer Lokalen Datei herausfinden Crypi PHP Tipps 2009 13 27.01.2009 09:09
Bei UPDATE erkennen, ob der Datensatz existiert? Anotherone Datenbanken 7 01.04.2008 14:49
Prüfen ob Verzeichnis auf dem FTP existiert mAy^daY Server, Hosting und Workstations 5 19.12.2006 02:40
mod_rewrite pfad problem TimmaY PHP Tipps 2006 1 08.08.2006 17:48
INTO OUTFILE - pfad nimmt er nicht an bendigo PHP-Fortgeschrittene 4 14.09.2005 01:21
pfad austausch lord nacon PHP Tipps 2005-2 0 12.08.2005 21:45
Prüfen ob db oder tabelle existiert GELight PHP Tipps 2005-2 2 01.08.2005 23:34
absoluter Pfad zur Datei - ohne Dateinamen PHP Tipps 2005 8 16.05.2005 19:40
phpmailer: Problem mit Pfad PHP Tipps 2005 4 10.02.2005 15:13
wie komm ich an den Pfad einer hochzuladenden Bilddatei? PHP Tipps 2004 6 26.10.2004 22:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php realpath, realpath php, http://www.php.de/php-fortgeschrittene/70630-pfad-mit-realpath-ermittelt-existiert-nicht.html, php php realpath, php realpath datei existiert noch nicht, realpath windows, authuserfile herausfinden, existiert nicht php, listproducts.php, php realpath to file, realpath, absoluten serverpfad herausfinden, warning: require_once() [function.require-once]: unable to access xtreme-one, php lokalen serverpfad ermitteln, php realpath ausgeben, php realpath(), php http include realpath, realpath ohne überprüfung ob datei existiert, php realpath windows 7, realpath windows 7 benutzer

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum