Zugriff auf Dateien außerhalb des document_root – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self?srt=yes Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 10:24:18 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798135?srt=yes#m1798135 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798135?srt=yes#m1798135 <p>Hallo!</p> <p>Vor kurzem hatte ich hier im Forum gelesen, man könnte/sollte ein Passwort außerhalb des document_root speichern.</p> <p>Wie aber kann man darauf zugreifen?</p> <p>Bisher kenne ich nur den Zugriff unterhalb des document_root, nämlich so:</p> <p>require_once ($_SERVER['DOCUMENT_ROOT'].[ggf.Subdirectories].'/datei.txt');</p> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 10:41:08 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798139?srt=yes#m1798139 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798139?srt=yes#m1798139 <p>Hallo Gastleser!</p> <p>Ich bin kein PHP-Experte und werde daher keinen funktionstüchtigen Code bereitstellen. Ich werde nur einen Weg zeigen, wie das funktionieren könnte.</p> <h4>Weg 1</h4><p>Du kannst, wie auch immer das geht, in das jeweilige Verzeichnis wechseln und dann immer ein Verzeichnis nach unten gehen. Von dort aus könntest du dann wieder Wechseln.<br> Dies würde ich jedoch einem für Webserver Bash-Script eher zutrauen als PHP.</p> <h4>Weg 2</h4><p>Du könntest $SERVER['DOCUMENT_ROOT'] irgendwie verarbeiten, dass du die obersten Ordner rausnimmst. Von dort aus könntest du dann wieder auf die Dateien zugreifen</p> <h4>Weg 3</h4><p>Was einfach gesagt, aber schwer erfüllt (bei Nicht-Self-Hosting) ist:<br> Nimm den absoluten Pfad des gesamten Dateisystemes.</p> <p>Mehr Wege fallen mir nicht auf Anhieb ein.</p> <p>Au revoir,<br> Samuel Fiedler</p> <div class="signature">-- <br> In CSS gibt es ja position: ab<em>solute</em>; und position: <strong>re</strong>lative;. Was ist nun die Mischung daraus?<br> Ganz klar: position: <strong>re</strong><em>solute</em>! </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 10:42:21 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798140?srt=yes#m1798140 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798140?srt=yes#m1798140 <p>Hallo Gastleser,</p> <p>ein PHP Script kann durchaus aus dem Document Root hinausgreifen, insoweit das die Zugriffsrechte auf dem Server erlauben. Oft ist es so, dass man außer dem Document Root vom Provider einen weiteren Ordner bereitgestellt bekommt.</p> <p>Bei meinem Hoster ist das beispielsweise:</p> <pre><code class="block">/customers/x/y/z /example.org /httpd.www ← DOCUMENT_ROOT /httpd.private /tmp </code></pre> <p>Ich könnte nun in <code>"$_SERVER[DOCUMENT_ROOT]/../tmp"</code> temporäre Dateien ablegen, oder ein Script mit Logindaten für die Datenbank aus <code>"$_SERVER[DOCUMENT_ROOT]/../httpd.private/include/dbconnect.php"</code> includen.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 11:08:08 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798141?srt=yes#m1798141 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798141?srt=yes#m1798141 <p>Hallo Samuel,</p> <blockquote> <p>Du kannst, wie auch immer das geht, in das jeweilige Verzeichnis wechseln und dann immer ein Verzeichnis nach unten gehen. Von dort aus könntest du dann wieder Wechseln.</p> </blockquote> <p>ich verstehe nicht, was du damit wirklich meinst.</p> <blockquote> <p>Dies würde ich jedoch einem für Webserver Bash-Script eher zutrauen als PHP.</p> </blockquote> <p>Wie lautete der Satz vor dem Vertauschen der Wörter?</p> <blockquote> <p>Was einfach gesagt, aber schwer erfüllt (bei Nicht-Self-Hosting) ist:<br> Nimm den absoluten Pfad des gesamten Dateisystemes.</p> </blockquote> <p>Das ist bei den mir bekannten Hostern das Mittel der Wahl. Diesen für deinen Webauftritt passenden Pfad bekommst du entweder im Kundencenter (oder einer ähnlichen Administrations-Oberfläche) angezeigt, oder der Hoster beschreibt in seinen FAQ, wie man diesen Pfad aus einem Basis-Pfad ableitet (z.B. indem man seine Kundennummer oder seine Domain als letztes Pfad-Segment anhängt).</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Мир для України. </div> Beispiel: Anderer Hoster Sat, 09 Apr 22 12:14:53 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798190?srt=yes#m1798190 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798190?srt=yes#m1798190 <p>Bei meinem Hoster sah das so aus, dass es am Anfang</p> <pre><code class="block">/homepages/uYXZ </code></pre> <p>gab. Darin habe ich SELBST die Ordner für die unterschiedlichen Domains angelegt:</p> <pre><code class="block">/homepages/uYXZ /Domain_1 /Domain_2 … /Domain_N </code></pre> <p>und die Ordner in der mir zur Verfügung gestellten Verwaltung den jeweiligen Hostnamen/Domains zugeordnet (Domain_1 hat also <code>/homepages/uYXZ/Domain_1</code>) als Serverroot (= <code>$_SERVER['DOCUMENT_ROOT']</code>).</p> <p>Da ich einmal beim Verzeichnisse anlegen war hab ich weiter gemacht:</p> <pre><code class="block">/homepages/uYXZ /Domain_1 /libs /Domain_2 /libs … /Domain_n /libs /private /shared_libs </code></pre> <p>In den Skripten includiere ich dann ganz stumpf folgendes Skript:</p> <pre><code class="block"><?php ### file: settings.php ## Verzeichnis für private Daten: ## (Nicht via HTTP[S] abrufbar.) define( 'private_dir', realpath( $_SERVER['DOCUMENT_ROOT'] . '/../private' ) . '/' ); ## Verzeichnis für Libarys, die von mehr ## als einer Webseite genutzt werden: ## (Nicht via HTTP[S] abrufbar.) define( 'shared_libs_dir', realpath( $_SERVER['DOCUMENT_ROOT'] . '/../shared_libs' ) . '/' ); ## Libarays für nur einen Webauftritt: ## (ACHTUNG: Via HTTP[S] abrufbar.) define( 'libs_dir', realpath( $_SERVER['DOCUMENT_ROOT'] . '/libs' ) . '/' ); </code></pre> <ul> <li>(Daran denken: Das <code>?</code>> am Ende von zu inkludierenden Dateien ist nicht nur nicht nötig, sondern sehr oft schädlich!)</li> <li>Das ich am Ende den Verzeichnisstrenner erzwinge (<code>realpath()</code> würde ihn löschen) hat den Vorteil, dass ich ihn nicht vergessen kann. Etwas wie</li> </ul> <pre><code class="block language-php"><span class="token function">reguire_once</span><span class="token punctuation">(</span> shared_libs_dir <span class="token operator">.</span> <span class="token string single-quoted-string">'/mysql_connect.php'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>würde dann eben zu</p> <pre><code class="block language-php"><span class="token function">reguire_once</span><span class="token punctuation">(</span> <span class="token string single-quoted-string">'/homepages/uYXZ/shared_libs//mysql_connect.php'</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>und der doppelte Verzeichnisstrenner (<code>//</code>) ist unschädlich, was das Vorgen „failsave“ macht - im Falle, dass man dessen Angabe vor dem Dateiname vergisst.</p> <p><strong>Hinweise:</strong></p> <ul> <li>Man sollte im Kopf behalten, dass die Dateien im <code>libs_dir</code> (eventuell) sehr wohl öffentlich abrufbar sind, die im <code>private_dir</code> und im <code>shared_libs_dir</code> nicht.</li> <li>Natürlich muss man bei einem Serverumzug bei der Verzeichnisstruktur bleiben und die notwendigen Dateien aus <code>../private</code> und <code>../shared_libs</code> mit kopieren.</li> </ul> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 11:52:39 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798143?srt=yes#m1798143 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798143?srt=yes#m1798143 <p>Hallo Samuel und Martin,</p> <blockquote> <blockquote> <p>Nimm den absoluten Pfad des gesamten Dateisystemes.</p> </blockquote> </blockquote> <blockquote> <p>Das ist bei den mir bekannten Hostern das Mittel der Wahl.</p> </blockquote> <p>Mittels $_SERVER['DOCUMENT_ROOT'] tut man genau das. Ich würde den absoluten Pfad aber keinesfalls in einem Programm hartcodieren. Weiß man, ob der Hoster bei Bedarf mal ein Web migiert und der Pfad dann auf einmal anders lautet?</p> <p>Wenn man den Basispfad vom Webserver frei Haus bekommt, sollte man das auch nutzen.</p> <p>Ein Ziel des Softwaredesigns ist das Vermeiden von festgelegten Abhängigkeiten, wo es nur geht.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 12:01:56 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798144?srt=yes#m1798144 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798144?srt=yes#m1798144 <p>Hallo Der Martin!</p> <blockquote> <p>ich verstehe nicht, was du damit wirklich meinst.</p> </blockquote> <p>Du bist im Verzeichnis DOCUMENT_ROOT. Dann gehst du ein Verzeichnis nach unten. Dann bist du nicht mehr im DOCUMENT_ROOT, sondern im „Elternverzeichnis“ von DOCUMENT_ROOT. Von dort aus kannst du den vorherigen Schritt beliebig oft wiederholen oder aber auf die Dateien zugreifen.<br> OK, schlechte Idee. Ginge auch einfacher.<br> Der Hintergrund dieser Idee war eigentlich nur, dass ich nicht wusste, ob man <strong>mitten</strong> in einem Dateipfad ein „../“ einbauen darf.</p> <blockquote> <p>Wie lautete der Satz vor dem Vertauschen der Wörter?</p> </blockquote> <p>„Dies würde ich jedoch einem für Webserver eher ungewöhnlichen Bash-Script mehr zutrauen als PHP.“</p> <p>Au revoir,<br> Samuel Fiedler</p> <div class="signature">-- <br> In CSS gibt es ja position: ab<em>solute</em>; und position: <strong>re</strong>lative;. Was ist nun die Mischung daraus?<br> Ganz klar: position: <strong>re</strong><em>solute</em>! </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 12:07:53 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798145?srt=yes#m1798145 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798145?srt=yes#m1798145 <p>Hallo,</p> <blockquote> <p>Du bist im Verzeichnis DOCUMENT_ROOT. Dann gehst du ein Verzeichnis nach unten. Dann bist du nicht mehr im DOCUMENT_ROOT, sondern im „Elternverzeichnis“ von DOCUMENT_ROOT.</p> </blockquote> <p>Das wäre meinem Verständnis nach nicht "nach unten" sondern "nach oben"!</p> <p>Gruß<br> Kalk</p> Zugriff auf Dateien außerhalb des document_root Wed, 13 Apr 22 05:31:13 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798299?srt=yes#m1798299 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798299?srt=yes#m1798299 <p>Hello,</p> <blockquote> <p>Du bist im Verzeichnis DOCUMENT_ROOT. Dann gehst du ein Verzeichnis nach unten. Dann bist du nicht mehr im DOCUMENT_ROOT, sondern im „Elternverzeichnis“ von DOCUMENT_ROOT. Von dort aus kannst du den vorherigen Schritt beliebig oft wiederholen oder aber auf die Dateien zugreifen.<br> OK, schlechte Idee. Ginge auch einfacher.<br> Der Hintergrund dieser Idee war eigentlich nur, dass ich nicht wusste, ob man <strong>mitten</strong> in einem Dateipfad ein „../“ einbauen darf.</p> </blockquote> <p>Einbauen darf man im Pfad erst einmal alles. Ob PHP dann den Pfad auch auflösen (<a href="https://www.php.net/manual/de/function.realpath" rel="nofollow noopener noreferrer">realpath()</a>) darf und damit benutzten, hängt von der Einrichtungsart ab: Modul, fastCGI, ....</p> <p>Wenn PHP als Modul des Apachen eingerichtet wird, ist die <a href="https://www.php.net/manual/de/ini.core.php#ini.open-basedir" rel="nofollow noopener noreferrer">open_basedir()-Direktive</a> (im VirtHost) maßgeblich.</p> <p>Auf einem shared Host sollte man für jeden VirtHost diverse Directories separat außerhalb der Document-Root anordnen:</p> <pre><code class="block language-text">_skeleton/ ├── data (d) ├── htdocs (d) │ ├── bilder (d) │ ├── images (d) │ ├── robots.txt (f) | └── favicon.ico (f) ├── includes (d) ├── logs (d) ├── sessions (d) └── tmp (d) </code></pre> <p>Für das "bilder"-Directory (Upload) schalte ich z. B. grundsätzlich sämtliche Interpretation (php, CGI, ...) ab, da es <em>innerhalb</em> der DocRoot liegt.</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 12:38:23 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798146?srt=yes#m1798146 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798146?srt=yes#m1798146 <p>Hi,</p> <blockquote> <blockquote> <p>Du bist im Verzeichnis DOCUMENT_ROOT. Dann gehst du ein Verzeichnis nach unten. Dann bist du nicht mehr im DOCUMENT_ROOT, sondern im „Elternverzeichnis“ von DOCUMENT_ROOT.</p> </blockquote> <p>Das wäre meinem Verständnis nach nicht "nach unten" sondern "nach oben"!</p> </blockquote> <p>ja, sehe ich auch so. Das machte einen Teil meines Nicht-Verstehens aus.</p> <p>Anders als in der Botanik assoziiert man bei Dateisystem- oder Objekthierarchien die Wurzel eher mit "oben".</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Мир для України. </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 13:30:31 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798149?srt=yes#m1798149 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798149?srt=yes#m1798149 <p>@@Der Martin</p> <blockquote> <p>Anders als in der Botanik assoziiert man bei Dateisystem- oder Objekthierarchien die Wurzel eher mit "oben".</p> </blockquote> <p><a href="https://forum.selfhtml.org/cites/890" rel="noopener noreferrer">Zitat 890</a></p> <p lang="uk"> Живіть довго і процвітайте</p> <div class="signature">-- <br> <em lang="en">When the power of love overcomes the love of power the world will know peace.</em><br> — Jimi Hendrix </div> Zugriff auf Dateien außerhalb des document_root Wed, 13 Apr 22 05:33:47 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798300?srt=yes#m1798300 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798300?srt=yes#m1798300 <p>Hello,</p> <blockquote> <blockquote> <p>Das wäre meinem Verständnis nach nicht "nach unten" sondern "nach oben"!</p> </blockquote> <p>ja, sehe ich auch so. Das machte einen Teil meines Nicht-Verstehens aus.</p> <p>Anders als in der Botanik assoziiert man bei Dateisystem- oder Objekthierarchien die Wurzel eher mit "oben".</p> </blockquote> <p>Damit wäre also bewiesen, dass Dateisysteme eher Hängepflanzen sind.<br> Oder ist das jetzt sexisitsch? ;-P</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> Zugriff auf Dateien außerhalb des document_root Fri, 08 Apr 22 13:35:41 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798151?srt=yes#m1798151 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798151?srt=yes#m1798151 <p>Hallo Gunnar,</p> <p>ja, sowas in der Art zu schreiben schwebte mir auch vor.</p> <p>Muss wohl an meinem berühmt berüchtigten braunen Daumen liegen.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> Humor { color: #000; } Wed, 13 Apr 22 08:44:20 Z https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798302?srt=yes#m1798302 https://forum.selfhtml.org/self/2022/apr/08/zugriff-auf-dateien-ausserhal-des-document-root/1798302?srt=yes#m1798302 <blockquote> <p>Damit wäre also bewiesen, dass Dateisysteme eher Hängepflanzen sind.</p> </blockquote> <p>Auch in einem Datengrab sieht man die Wurzeln von unten wachsen.</p>