Original von bitmuncher
Beispiel: In einer Firma, in der ich als Freiberufler einige Webserver verwaltete, bekam ich vom Chef die Anweisung, dass die neue Version vom virtuellen Host XY jetzt nicht mehr auf <docroot>/ordner/ gehen soll, sondern auf <docroot>/ordner/2.0/. In die 2.0 wurden aber auch Daten [also Programme?] aus der alten App übernommen, die relative Pfade enthielten, wodurch u.a. einige Dateien nun nicht mehr in <docroot>/ gesucht wurden, wo die API-Files sich befanden, sondern in <docroot>/ordner/, wo sie aber nicht vorlagen.
Gut, API-Dateien sind wieder etwas ganz anderes, denn dort greift ja eine Anwendung anstatt auf eigenen Code eben auf fremden Code zu, der ganz woanders liegen kann.
In diesem Fall (wenn es also nicht eigene Dateien sind) ist ein absoluter Pfad natürlich die logische Schlussfolgerung... der Pfad wird natürlich dann in einer Config-Datei oder einer Dateibank gespeichert. Dies gilt aber eben nur bei Zugriffen auf außerhalb jeglicher Art.
Original von beavisbee
Original von valenterry
Und in meinem Programm stehen dann immer Links wie "$spezieller_pfad/bilder/pic.jpg"? Das bedeutet dann aber, dass ich in meinem Programm die Variable $spezieller_pfad verwenden muss. Also muss ich einmal $spezieller_pfad1 für mein erstes Programm und $spezieller_pfad2 für mein zweites Programm erstellen, seh ich das richtig?
Und was mach ich dann, wenn ich ein n-tes Programm hosten möchte (da wirds natürlich theoretisch). Dann müssen ja bei allen Programmen die $spezieller_pfadN Variablen im Quelltext unterschiedlich sein, damit nicht zwei Programme den gleichen Pfad benutzen.
wie gesagt: gemeinsam verwendete Dateien am besten in separaten Ordner, auf den dann alle zugreifen...
Ich glaub du hast falsch verstanden. Ich meine folgendes:
root/projekt1/projektdaten/programmX.php
root/projekt2/projektdaten/programmY.php
Da die Programme X und Y nun nur die relative Pfade innerhalb des Ordners projektdaten kennen, müssen sie andere Dateien entweder relativ ansprechen oder aber sie müssen erfahren, wie der absolute Pfad zu ihnen oder zum Programmordner ist. Du schlägst also vor, das man zwei Variablen erstellt, einmal $spezieller_pfad1 und $spezieller_pfad2. Im programmX.php steht dann irgendwo sowas wie "$spezieller_pfad1/noch/irgend/ein/pfad/programmX2.php". Dadurch wird Programm X2 auch problemlos aufgerufen. Programm X2 kann auch eine CSS Datei sein, die eingebunden wird oder sonst irgendwas.
Im Quelltext von allen Programmen des projekt1 steht also immer $spezieller_pfad1/...usw... und bei projekt2 ist das dann $spezieller_pfad2. Falls sich er Ordner von projekt2 irgendwie ändern sollte, muss man nur einmal zentral die Umgebungsvariable $spezieller_pfad1 anpassen, sodass die Pfade valide bleiben.
Hab ich dich soweit richtig verstanden?
Das Problem, was ich dabei nun sehe ist: in den zwei unterschiedlichen Projekten dürfen _nicht_ die selben Variablennamen benutzt werden. Da man aber nicht weiß, welches Projekt mit welchen anderen Projekten genutzt werden könnte, müssen die Variablen in _jedem_ Projekt unterschiedlich sein. Man müsste also wohl Hashes einsetzen und das wäre doch sehr umständlich.
(...) für kleinere Projekte mag das stimmen... aber wenn du ein richtiges Template-System hast, wo der komplette HTML-Code der Seite getauscht werden können soll,
Wenn für eine Designänderung der HTML-Code verändert werden muss, dann begeht man sowieso einen ziemlich großen Fehler. Und ja auch hier: ich weiß, dass sich soetwas in der Praxis oft nicht vermeiden lässt. Trotzdem bleibt es schlecht. Und wenn man eigenes Projekt hat, bei dem man keinem Druck ausgesetzt ist, kann man sich genug Zeit nehmen ein Design (Design hier = logische Struktur) zu entwerfen, das man für ein anderes Aussehen nicht ändern muss.
(...) Das geht nicht um menschliche Fehler, sondern darum, dass man ein System auch problemlos auf andere Bedürfnisse (z.B. im Zuge der Suchmaschinen-Optimierung) anpassen kann.
Suchmaschinen-Optimierung... wenn ich sowas schon lese... =/