2009-03-02 3 views
1

Ich benutze SVN, um eine Kopie meiner Website zu verwalten. Die Site führt eine typo3-Installation durch, die PHP verwendet, um das Backend zu erstellen.Wie kann ich verstecken .SVN Verzeichnisse von PHP

Das Problem ist, alle dummen .SVN Ordner erscheinen in der Verzeichnisliste von PHP. Ich meine nicht die Build-in-Apache-Auflistung. Ich meine eine direkte Liste, die vom PHP-Backend erstellt wurde.

Gibt es also eine Möglichkeit, spezielle Verzeichnisse vor PHP zu verbergen?

[HINWEIS] Das Ändern des PHP-Quellcodes ist keine Option. Typo3 ist zu groß und jede Erweiterung verwendet ihren eigenen Code. Wäre viel mehr Aufwand als ein SVN-Export-Skript.

Chris

PS: Ich will keinen SVN Export Setup -> web_root nur die Dateien loszuwerden. Und ich weiß, dass ich verhindern kann, dass Apache die .SVN-Verzeichnisse bedient, das habe ich getan. Sie werden jedoch immer noch im Backend angezeigt, wenn Sie den Verzeichnisbaum durchsuchen (der von PHP erstellt wurde). Und sie sind sehr ärgerlich ...

+3

Wechsel zu Git ... lol. – gahooa

Antwort

4

Dies ist schwierig, da Sie das Verhalten von etwas irgendwo zwischen dem Dateisystem und Typo3 ändern müssen.Sie haben:

Filesystem → Betriebssystem → PHP → Typo3

Die Dateien im Dateisystem bleiben und müssen durch das Betriebssystem sichtbar bleiben, so dass Sie SVN verwenden können. Das Ändern von Typo3 ist keine Option für Sie, und das Ändern von PHP hat viele andere unerwünschte Folgen, die Sie vermeiden sollten. Also, was Sie übrig haben, ist etwas zwischen OS → PHP oder PHP → Typo3 einzufügen.

Der erste Fall ist tatsächlich möglich, je nachdem, welches Betriebssystem Sie verwenden und ob Sie Administrator (Root) -Zugriff haben. FUSE ist Teil des Linux-Kernels und ist auch available for many other operating systems. Dann können Sie mit Sicherung einen Filter wie rofs-filtered installieren, mit dem Sie filtern können, welche Dateien und Verzeichnisse in einem gemounteten Volume sichtbar sind. Sie verwenden es, um ein Dateisystem zu erstellen, das Ihr SVN Checkout-Verzeichnis spiegelt und die .svn Verzeichnisse filtert.

+0

Ist das nicht eine große Verlangsamung? Angesichts der Tatsache, dass Typo3 selbst nicht wirklich schnell ist, weil es php Initialize-Complete-Application-auf-jeder-Anfrage-Natur ist ... – hurikhan77

0

Versuchen Sie es.

<locationmatch "/.svn/"> 
    order allow,deny 
    deny from all 
</locationmatch> 

Btw in der Schleife in PHP können Sie eine logische Prüfung tun, um zu sehen, ob der Dateiname nicht „.svn“ ist, in der Regel PHP Verzeichnis Tools tun auszuschließen „“ und ".." Verzeichnisse.

+0

Ich glaube, er erwähnte, dass sein Problem nicht mit Apache Verzeichnisauflistungen war. Ihre Konfiguration würde den Zugriff blockieren, aber der Benutzer würde sie trotzdem sehen, wenn seine Anwendung eine Art von Verzeichnisliste ausführt. – Zoredache

+0

@Zoredache das ist, warum ich den Kommentar unten hinzugefügt habe. –

0

Das Problem ist, alle dummen .svn Ordner, die im Verzeichnis Auflistung von PHP auf. Ich meine nicht die Build in Apache Auflistung. Ich meine eine Directoyliste, die vom PHP Backend erstellt wird.

Welche Anwendung führt die Verzeichnisliste durch? Haben Sie darüber nachgedacht, in den Code des PHP-Backends zu schauen und etwas hinzuzufügen, um die Anzeige der .svn-Verzeichnisse zu verhindern?

+0

Ja, ich dachte darüber nach ... Aber das würde bedeuten, in den Kern von typo3, einem sehr großen Content-Management-System, zu hacken. Ich möchte das wirklich vermeiden! –

+0

Oh, und nebenbei kann ich nicht sicher sein, dass das funktioniert, denn typo3 unterstützt ein Extension System. Das heißt, es gibt Plugins, die die Verzeichnisliste selbst machen, also müsste ich alle Erweiterungen ändern. –

+0

Wenn das der Fall ist, dann klingt es so, als ob Ihre einzige Wahl, die .svn-Ordner zu verstecken, einfach ist, stellen Sie sicher, dass sie nicht da sind. Löschen Sie sie oder etwas. – Zoredache

-1

Wenn Sie die .svn-Ordner nicht benötigen, können Sie sie einfach löschen.

find ./ -name ".svn" | xargs rm -f *.svn 
+0

Auch wenn der Benutzer PHP läuft unter hat keine Leseberechtigungen für die tatsächlichen Ordner, wenn der übergeordnete Ordner der. Svn ist lesbar das Verzeichnis wird immer noch in einer Datei angezeigt. Sie können einfach nicht hineindiskutieren und dann seine Verzeichnisliste lesen. –

+0

Verwenden Sie den zweiten Vorschlag, um die svn-Verzeichnisse tatsächlich zu löschen. Gibt es einen Grund, der nicht funktioniert? –

+0

Dies löst das Problem offensichtlich nicht. Subversion wird für die Versionierung verwendet, so dass der Ordner beibehalten werden muss. – Caffeine

3

So ist es eine Möglichkeit, spezielle Verzeichnisse von PHP zu verbergen?

Nr

Solange der Benutzer PHP unter in das Verzeichnis gelesen hat Zugriff ausgeführt wird, es alle Dateien immer produzieren/Verzeichnisse in diesem Verzeichnis. Es gibt keine Möglichkeit, Dateien vor bestimmten Prozessen zu verbergen. Wenn dies möglich wäre, wäre es viel einfacher, ein Root-Kit zu schreiben, das sich vor ls und anderen Dateisystem-Tools verstecken würde.

Die Option, die Sie benötigen/benötigen, ist eine Möglichkeit, Dateien zu definieren, die Typo3 ignoriert, und es muss systemweit sein und somit auch von den Erweiterungen verwendet werden. Sie haben jedoch angegeben, dass Sie den Quellcode nicht ändern möchten und nicht den SVN-Export durchführen möchten.

Sie sind daher mit den .svn-Verzeichnissen fest.

0

Suchen oder schreiben Sie eine sehr einfache Anwendung, die Ihr aktuelles Verzeichnis mit einem neuen Verzeichnis synchronisiert, das dem Web zur Verfügung gestellt wird. Sie könnten einen Dienst haben, der nach Änderungen Ausschau hält oder etwas wie ein Rsync mit Ausschlüssen verwendet oder was Sie haben. Dies wäre viel einfacher, da Sie auf einer anderen Frage unter Windows arbeiten.

0

Es gibt eine Erweiterung namens np_subversion, die sich um Dateiadmin-Änderungen via Subversion kümmern wird. Als ein nettes Plus wird es Ordner für Sie verbergen

3

Die kurze Antwort ist "Nicht leicht, einfach oder gesund".

Führen Sie die Website von einem export von SVN, nicht eine Kasse, statt.

0

Ich will kein SVN Export Setup -> web_root nur um

der Dateien befreien

Sind Sie sicher? So wird SVN entwickelt: Sie prüfen Code aus SVN, um daran zu arbeiten, und exportieren Code aus SVN, um ihn zu implementieren. Wenn Sie das nicht mögen, dann ist SVN wahrscheinlich nicht die richtige Wahl. Wie Gahooa sagte, vielleicht zu Git wechseln?

Es ist ein bisschen wie zu sagen "Ich möchte mein Word-Dokument speichern, aber ich will nicht, dass diese dumme .doc-Datei auf meinem Computer angezeigt wird." So funktioniert die Software.

+0

Und was wird durch den Wechsel zu Git gelöst werden? – Juliano

+0

Ich glaube, Git speichert seine Version Tracking-Daten in einer einzigen Datei (oder Ordner?) Im Stamm der Arbeitskopie. Mit Git würden Sie also nicht "die blöden .SVN-Ordner in der Verzeichnisliste von PHP anzeigen". Welches Problem hatte Chris? Sie würden jedoch eine dumme Git-Datei oder einen Ordner bekommen, aber nur den einen, im root. –

+0

Mit anderen Worten, es löst nichts. Sie haben immer noch den .git-Ordner, und schlimmer noch, er enthält den vollständigen Überarbeitungsverlauf der Anwendung, den die Benutzer nach Belieben herunterladen können. Svk wäre eine bessere Antwort für diese Angelegenheit, da seine Arbeitskopien * vollständig * sauber von Versionsdaten sind (es wird an einem völlig anderen Ort aufbewahrt) * und * es ist vollständig kompatibel mit Svn, was bedeutet, dass er es nicht nötig hätte VCS wechseln. Das Wechseln von VCS wegen dieses kleinen Problems ist wie das Vorschlagen, dass Sie Ihr Auto wegen eines platten Reifens ersetzen müssen ... – Juliano

0

Sara Golemon Runkit kann dies tun. Sie können Funktionen wie glob() neu zuordnen. Ich bin mir jedoch nicht sicher, ob es eine gute Idee ist, es auf einem Produktionsserver auszuführen.

Verwandte Themen