php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.01.2012, 14:06  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
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 eagle275 Beitrag anzeigen
is ja nett - aber wozu überhaupt Directory-Separator unterscheiden - wie Java kann PHP auf JEDWEDEM Betriebssystem mit '/' umgehen !
Der Grund dürfte eher darin liegen, dass "jedwedes"[0] Betriebssystem normale (Forward-)Slashes als Verzeichnistrenner akzeptiert.

PHP tut da nicht viel dazu. Realpath() bspw. ruft in der Windows-Variante über ein paar Macro-Umwege lediglich GetFullPathName() auf und reicht dessen Ergebnis weiter.

--
[0] Mal abgesehen von uralten MacOS-Versionen (":"). Der MSDOS-Kommandozeileninterpreter ("\") war und ist kein Betriebsstem.

Geändert von fireweasel (16.01.2012 um 14:52 Uhr). Grund: realpath()
fireweasel ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.01.2012, 20:04  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Der Grund dürfte eher darin liegen, dass "jedwedes"[0] Betriebssystem normale (Forward-)Slashes als Verzeichnistrenner akzeptiert.

--
[0] Mal abgesehen von uralten MacOS-Versionen (":"). Der MSDOS-Kommandozeileninterpreter ("\") war und ist kein Betriebsstem.
Das ist so nicht ganz korrekt, der gesamte Verzeichnisstamm des NTFS wird mit Backslashes angegeben, M$ hat das durchgehend in alle Windows-Versionen ethabliert und weicht ( systemintern ) davon auch nicht ab.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 15.01.2012, 21:44  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Der Grund dürfte eher darin liegen, dass "jedwedes"[0] Betriebssystem normale (Forward-)Slashes als Verzeichnistrenner akzeptiert.
Nicht ganz korrekt. Auf einer WAMP Kiste fressen PHP und Apache beides, wenn es ums filesystem geht. Hier ist aber zu beachten, daß innerhalb von "Gänsefußstrings" das \ als escapezeichen agiert.
Im HTML wird nur / akzeptiert, egal wie das OS heißt.
  Mit Zitat antworten
Alt 16.01.2012, 05:55  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von meikel Beitrag anzeigen
Nicht ganz korrekt. Auf einer WAMP Kiste fressen PHP und Apache beides, wenn es ums filesystem geht. Hier ist aber zu beachten, daß innerhalb von "Gänsefußstrings" das \ als escapezeichen agiert.
Im HTML wird nur / akzeptiert, egal wie das OS heißt.
Trifft nicht für jeden Browser zu, Google Chrome und IE akzeptieren auch \-getrennte Verzeichnisspfade.

HTML-Code:
<!DOCTYPE html>
<html>
	<head>
		<title>url test band</title>
		<meta charset="utf-8" />
	</head>
	<body>
		<img src="test\php_logo.jpg" />
	</body>
</html> 
Code:
Google Chrome => Bild wird angezeigt
IE 9 => Bild wird angezeigt
Mozilla Firefox => Bild wird nicht angezeigt
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.01.2012, 08:06  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von tr0y Beitrag anzeigen
Trifft nicht für jeden Browser zu, Google Chrome und IE akzeptieren auch \-getrennte Verzeichnisspfade.
Beim IE wundert mich überhaupt nix mehr. Daß Google (sagen wir mal) kreatives HTML frißt, läßt befürchten, daß as Teil demnächst auch noch die jpegs als image/pjpeg bezeichnet.

Zitat:
Mozilla Firefox => Bild wird nicht angezeigt
Wenigstens einer, der das HTML Handbuch kennt.
  Mit Zitat antworten
Alt 16.01.2012, 14:04  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
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 meikel Beitrag anzeigen
... Hier ist aber zu beachten, daß innerhalb von "Gänsefußstrings" das \ als escapezeichen agiert.
Das ist ein Problem des Kommandozeileninterpreters, aber nicht der Betriebssystemschnittstelle, die die PHP-Dateisystemfunktionen ansprechen. Die erwartet null-terminierte Strings. "Gänsefüßchen" sind dort ganz normale Zeichen.

Zitat:
Im HTML wird nur / akzeptiert, egal wie das OS heißt.
Das mag sein, aber in HTML gibt es keine Dateisystem-Pfade, nur URLs. Das Interpretieren bleibt also dem Browser überlassen. Der sollte in URLs, die aufs lokale Filesystem mappen, Backslashes akzeptieren, wenn er unter Windows läuft. Das Ganze hat aber wieder keine (direkte) Auswirkung auf ein PHP-Script.

Bitte, ich möchte nicht die Schuld daran tragen, dass diese Diskussion immer weiter vom Ursprungsthema abdriftet. Wenn ich Blödsinn geschrieben habe, dann korrigiere mich, aber bitte bleibe, wenigstens wenn du mir antwortest, beim Thema. Hier ging es ums Pfade-Zusammenkleben für PHP-Dateisystem-Funktionen. HTML ist eine andere Baustelle.

Zitat:
Zitat von tr0y Beitrag anzeigen
Das ist so nicht ganz korrekt, der gesamte Verzeichnisstamm des NTFS wird mit Backslashes angegeben, ...
Kann man sich das irgendwo ansehen?

Zitat:
... M$ hat das durchgehend in alle Windows-Versionen ethabliert und weicht ( systemintern ) davon auch nicht ab.
Windows-API-Funktionen akzeptieren Forward-Slashes[0] und Backslashes in Pfadangaben und das auch gemischt.

Nur weil ein paar eigenwillig programmierte Anwendungen möglicherweise nur den Backslash kennen (wie der schon erwähnte Kommandozeileninterpreter[1] a.k.a. "Eingabeaufforderung"), trifft das nicht auf den kompletten Betriebssystem-Unterbau zu. PHP-Funktionen, die mit Pfaden arbeiten, stört das auch nicht (so lange sie nicht mit UNC-Pfaden hantieren).

__

[0] Wenn ich richtig informiert bin, tun das alle Windows-(Consumer-)Betriebssysteme seit dem ersten, das mit Unterverzeichnissen umgehen konnte, also MS-DOS 2.x (falls man DOS als Betriebssystem ansehen mag). Der Grund ist die (damalige) Orientierung an Unix-Betriebssystemen (wer hätte das gedacht. ).

[1] Das Teil weicht deswegen vom Standard-Slash ab, weil der in QDOS/MS-DOS als Anzeiger für Flags ("commandline switch delimiter") vorgesehen war. Das geht auf den QDOS-Vorgänger CP/M zurück, lies sich aber in DOS 2.x (per SWITCHAR in der config.sys) umdefinieren. In DOS 3.x hat man das (wohl wegen Problemen mit Netzwerkpfaden) wieder abgeschafft.

Setzt man den Pfad in Anführungszeichen, kann der Forward-Slash nicht mehr als Flag-Anzeiger fehlinterpretiert werden. Dann erkennt ihn auch die "Kommandozeile" als Verzeichnis-Separator. So etwas wie
Code:
cd "./path\another_path"
funktioniert also ohne Fehlermeldungen.

Geändert von fireweasel (16.01.2012 um 14:34 Uhr). Grund: ergänzungen + typos
fireweasel ist offline   Mit Zitat antworten
Alt 16.01.2012, 14:30  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Wo steht das geschrieben?
Kein Pfad der Systemintern gespeichert wird ( registry / files ) nutzt slashes, blend mal beim Explorer das aktuelle Verzeichnis in die Titelleiste ein.

http://www.comentum.com/File-Systems-HFS-FAT-UFS.html

Alle Tuts, Libs, Whitebooks und Manuals nutzen grundsätzlich den Backslash:
http://msdn.microsoft.com/en-us/libr...85).aspx#paths

Lass mir die Interpretationsfreiheit das "\" der Windows-eigene Dir-Separator ist ohne jetzt die gesamte MSDN-Library nach dem "Schwarz auf Weiß"-Beweiß zu suchen.

Zitat:
Zitat von fireweasel Beitrag anzeigen
Windows-API-Funktionen akzeptieren Forward-Slashes[0] und Backslashes in Pfadangaben und das auch gemischt. Dass ein paar eigenwillig programmierte Anwendungen möglicherweise nur den Backslash kennen (wie der schon erwähnte Kommandozeileninterpreter[1] a.k.a. "Eingabeaufforderung"), hat damit nichts zu tun. Es betrifft die PHP-Funktionen, die mit Pfaden arbeiten, auch nicht (so lange sie nicht mit UNC-Pfaden hantieren).
Code:
cd /users
funktioniert wunderbar
Code:
cd /
auch
Zitat:
Zitat von fireweasel Beitrag anzeigen
__

[0] Wenn ich richtig informiert bin, tun das alle Windows-Betriebssysteme seit dem ersten, das mit Unterverzeichnissen umgehen konnte, also MS-DOS 2.x (falls man DOS als Betriebssystem ansieht). Der Grund ist die (damalige) Orientierung an Unix-Betriebssystemen (wer hätte das gedacht. ).

Setzt man den Pfad in Anführungszeichen, kann der Forward-Slash nicht mehr als Flag-Anzeiger missinterpretiert werden. Dann erkennt ihn auch die "Kommandozeile" als Verzeichnis-Separator. So etwas wie
Code:
cd "./path\another_path"
funktioniert also ohne Fehlermeldungen.
Code:
cd path/another_path
works
Code:
cd ./path\anotherpath
works
Code:
cd "./path\anotherpath"
works

Code:
dir /path/to/something /w > file:##hideithere##
works..
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.01.2012, 14:45  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
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 tr0y Beitrag anzeigen
Kein Pfad der Systemintern gespeichert wird ( registry / files ) nutzt slashes, ...
Nur sind Registry-Pfade keine Dateisystem-Pfade.

Zitat:
... blend mal beim Explorer das aktuelle Verzeichnis in die Titelleiste ein.
Den benutze ich nicht (es gibt andere Shells). Man kann die Registry auch per SQL (WMI|WBEM) abfragen, trotzdem steckt kein Datenbankserver dahinter. Der Exploiter ist auch nur ein Anwendungsprogramm. Seine Oberfläche muss Dateisystem-Interna nicht 1:1 wiedergeben. Tut sie auch nicht, sie versteckt ja gerne mal was, wie bspw. ".htaccess"-Dateien.

Diese "Dokumentation" erscheint mir unvollständig ... und einem SEO-Marketing-Unternehmen glaube ich sowieso nichts.

Ich schätze, da ist Wikipedia eine verlässlichere Quelle.


Zitat:
Lass mir die Interpretationsfreiheit das "\" der Windows-eigene Dir-Separator ist ohne jetzt die gesamte MSDN-Library nach dem "Schwarz auf Weiß"-Beweiß zu suchen.
Die lass ich dir gerne. Ich dachte nur, du hättest eine Quelle, die mir erklärt, was du mit
Zitat:
... der gesamte Verzeichnisstamm des NTFS wird mit Backslashes angegeben ...
meintest.

Soweit ich weiß, lassen NTFS-"Treiber" unter Linux bspw. Backslashes als Dateinamensbestandteil zu. Das heißt aber, dass sie auf der Festplatte (wo ich den von dir erwähnten Verzeichnisstamm mangels besseren Wissens verorte) nicht als Verzeichnistrennzeichen zu finden sein dürften.

Zitat:
Zitat von tr0y Beitrag anzeigen
...
Alle Tuts, Libs, Whitebooks und Manuals nutzen grundsätzlich den Backslash:
http://msdn.microsoft.com/en-us/libr...85).aspx#paths
Das ist eine Empfehlung oder Übereinkunft ("convention"), den Backslash zu benutzen. Dort steht nicht, dass der Forward-Slash kein Verzeichnis-Trenner wäre ...

Zitat:
Code:
cd /users
funktioniert wunderbar
...
Code:
dir /path/to/something /w > file:##hideithere##
works..
q.e.d.?
Es freut mich, wenn du mich beim Versuch, mich zu widerlegen, bestätigst.

___

Um diesen Thread jetzt nicht noch unnötig zu verlängern, hier die Antwort auf deine Antwort:

Zitat:
... was Windows Intern draus macht ist bei der Frage "\" oder "/" als DEFAULT-Directory-Separator.
Nein, die Frage, zu der ich mich klarstellend|ergänzend äußerte (problem mit DIRECTORY_SEPARATOR), war: Können Windows-API-Funktionen mit Forward-Slashes als Verzeichnistrenner umgehen oder sorgt PHP dafür, dass realpath() und seine Kumpels dieses Zeichen akzeptieren? (Das impliziert b.t.w. die Eingabe desselben, aber nicht unbedingt die Ausgabe).

Die Antwort bleibt: Windows-API-Funktionen tun das und PHP-Funktionen reichen die Pfade einfach weiter. Aber manch einer fühlt sich dabei anscheinend irgendwie unwohl ... warum auch immer.

Geändert von fireweasel (16.01.2012 um 17:04 Uhr). Grund: Ergänzungen, Links und dämliche QUOTE-Tags, corrected automoronic link conversions
fireweasel ist offline   Mit Zitat antworten
Alt 16.01.2012, 15:13  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Mir gings um System Internals von Windows, dort wird \ genutzt nicht /, wie du dein OS "shellst" bleibt dir überlassen, was deine "Shells" draus machen ( sind ja auch nur Anwendungen nech.. ) ist mir Hupe und weit weg vom Kern des Systems. Es ist auch relativ egal was du aussagst über alternative Registry-Zugriffsmöglichkeiten, was Windows Intern draus macht ist bei der Frage "\" oder "/" als DEFAULT-Directory-Separator.

Linux im übrigen äfft nur NTFS-behaviors nach, das warum erklärt sich wohl aus "propritäres Dateisystem".

Quod erat demonstrandum aut sapienti sat.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (16.01.2012 um 15:48 Uhr).
tr0y ist offline   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
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 02:27
[Erledigt] Problem mit Mehrsprachigkeit Sniper_Kotaro PHP Tipps 2009 2 16.12.2009 11:47
Problem beim Download Management mistermint PHP Tipps 2009 8 24.10.2009 11:34
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 19:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kommandozeileninterpreter windows 7 string quoten, smarty dir separator windows, php betriebssystem verzeichnistrenner

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:49 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