Как я могу скрыть .SVN каталоги от PHP - PullRequest
1 голос
/ 02 марта 2009

Я использую SVN для управления копией моего веб-сайта. Сайт запускает установку typo3, которая использует PHP для создания серверной части.

Проблема в том, что все глупые папки .SVN отображаются в списке каталогов PHP. Я НЕ имею в виду сборку в Apache. Я имею в виду листинг директой, созданный бэкэндом PHP.

Итак, есть ли способ скрыть специальные каталоги от PHP?

[Примечание] Изменение исходного кода PHP не вариант. Typo3 слишком велик, и каждое расширение использует свой собственный код. Было бы гораздо больше усилий, чем скрипт экспорта SVN.

Chris

PS: я не хочу настраивать экспорт SVN -> web_root, чтобы просто избавиться от файлов. И я знаю, что могу помешать Apache обслуживать каталоги .SVN, я так и сделал. Но они по-прежнему отображаются в бэкэнде при просмотре дерева каталогов (которое создается PHP). И они очень раздражают ...

Ответы [ 10 ]

4 голосов
/ 02 марта 2009

Это сложно, так как вам придется изменить поведение чего-то где-то между файловой системой и Typo3. У вас есть:

Файловая система → Операционная система → PHP → Typo3

Файлы должны оставаться в файловой системе и должны оставаться видимыми операционной системой, чтобы вы могли использовать SVN. Изменение Typo3 не вариант для вас, и изменение PHP имеет много других серьезных нежелательных последствий, которых вам следует избегать. Итак, вам осталось вставить что-то среднее между ОС → PHP или PHP → Typo3.

Первый случай действительно возможен, в зависимости от того, какую операционную систему вы используете, и если у вас есть права администратора (root). FUSE является частью ядра Linux, а также доступен для многих других операционных систем . Затем с помощью fuse вы можете установить фильтр, подобный rofs-Filter , который позволяет вам фильтровать, какие файлы и каталоги видны в подключенном томе. Вы используете его для создания файловой системы, которая отражает ваш каталог проверки SVN, фильтруя каталоги .svn.

3 голосов
/ 21 января 2010

Краткий ответ: "Не легко, просто или разумно".

Запустите веб-сайт из экспорта SVN, а не извлечения.

3 голосов
/ 02 марта 2009

Итак, есть ли способ скрыть специальные каталоги от PHP?

номер

Пока пользователь, под которым работает PHP, имеет доступ для чтения к каталогу, он всегда будет создавать все файлы / каталоги в этом каталоге. Спрятать файлы от определенных процессов невозможно, если бы было возможно написание корневого набора, скрывающего от ls и других инструментов файловой системы, намного проще.

Опция, которая вам нужна / нужна, - это способ определить файлы, которые Typo3 игнорирует, и сделать так, чтобы они были общесистемными и, следовательно, использовались расширениями. Однако вы указали, что не хотите изменять исходный код и не хотите выполнять экспорт SVN.

Таким образом, вы застряли в каталогах .svn.

0 голосов
/ 21 января 2010

Сара 1008 * Сара Големона может сделать это. Вы можете переназначить функции, такие как glob (). Однако я не уверен, стоит ли запускать его на рабочем сервере.

0 голосов
/ 21 января 2010

Я не хочу настраивать экспорт SVN -> web_root, чтобы избавиться от файлов

Ты уверен? Вот как устроен SVN: вы извлекаете код из SVN для работы над ним и экспортируете код из SVN для его развертывания. Если вам это не нравится, то SVN, вероятно, не правильный выбор. Как сказал гагуа, может, переключиться на Git?

Это все равно, что сказать: «Я хочу сохранить свой документ Word, но я не хочу, чтобы этот глупый файл .doc появлялся на моем компьютере». Так работает программное обеспечение.

0 голосов
/ 21 января 2010

Это расширение, называемое np_subversion, которое позаботится об изменениях fileadmin через subversion. В качестве приятного плюса он скроет папки для вас

0 голосов
/ 02 марта 2009

Просто найдите или напишите очень простое приложение, которое синхронизирует ваш текущий каталог с новым каталогом, который будет доступен для Интернета. Вы можете иметь службу, которая следит за изменениями или использовать что-то вроде rsync с исключениями или что-то еще. Это было бы намного проще, поскольку, основываясь на другом вопросе, вы работаете в Windows.

0 голосов
/ 02 марта 2009

Если вам не нужны папки .svn, вы можете просто удалить их.

find ./ -name ".svn" | xargs rm -f *.svn
0 голосов
/ 02 марта 2009

Проблема в том, что все глупые .SVN папки отображаются в каталоге листинг PHP. Я не имею в виду встроить в Apache список. Я имею ввиду прямой каталог, созданный PHP бэкенд.

Какое приложение выполняет распечатку каталога? Рассматривали ли вы просмотр кода бэкэнда PHP и добавление чего-либо, чтобы предотвратить отображение каталогов .svn?

0 голосов
/ 02 марта 2009

Попробуйте это.

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

Между прочим, в вашем цикле в PHP вы можете выполнить логическую проверку, чтобы увидеть, не является ли имя файла ".svn", обычно инструменты каталога PHP делают это, чтобы исключить "." и ".." каталоги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...