2009-03-02 5 views
1

내 웹 사이트의 사본을 관리하는 데 SVN을 사용하고 있습니다. 이 사이트는 PHP를 사용하여 백엔드를 만드는 typo3 설치를 실행합니다.PHP에서 .SVN 디렉토리를 숨기려면 어떻게해야합니까?

문제는 모든 바보 같은 .SVN 폴더가 PHP의 디렉토리 목록에 나타납니다. 나는 아파치 리스팅에서 빌드를 의미하지는 않는다. 나는 PHP 백엔드에 의해 만들어진 directoy 리스팅을 의미한다.

PHP에서 특수 디렉토리를 숨기는 방법이 있습니까?

[주의] PHP 소스 코드를 변경하는 것은 옵션이 아닙니다. 오타 3는 너무 커서 각각의 확장은 자체 코드를 사용합니다. SVN 내보내기 스크립트보다 훨씬 많은 노력이 필요합니다.

크리스

PS : 나는 설정에 svn의 수출을 원하지 않는다 -> 파일 만 제거 할을 web_root. 그리고 아파치가 .SVN 디렉토리를 제공하는 것을 막을 수 있다는 것을 알고 있습니다. 하지만 백엔드에서는 여전히 PHP (디렉토리 트리)를 탐색 할 때 표시됩니다. 그리고 그들은 매우 성가시다 ...

+3

git ... lol. – gahooa

답변

4

파일 시스템과 Typo3 사이의 동작을 변경해야하기 때문에 어렵습니다.파일 시스템에 남아 있어야합니다

파일 시스템 → 운영 시스템 → PHP → TYPO3

파일 및 SVN을 사용할 수 있도록, 운영 체제에서 볼 수 유지해야합니다 당신은있다. 오타 3를 변경하는 것은 옵션이 아니며, PHP를 변경하면 피해야하는 많은 다른 바람직하지 않은 결과가 발생합니다. 그래서 남은 것은 OS → PHP 또는 PHP → Typo3 사이에 뭔가를 삽입하는 것입니다.

실제로 어떤 운영 체제를 사용하고 관리자 (루트) 권한이 있는지에 따라 첫 번째 경우가 실제로 가능합니다. FUSE은 Linux 커널의 일부이며 available for many other operating systems입니다. 그런 다음 퓨즈를 사용하여 rofs-filtered과 같은 필터를 설치하면 탑재 된 볼륨에서 볼 수있는 파일과 디렉토리를 필터링 할 수 있습니다. .svn 디렉토리를 필터링하여 SVN 체크 아웃 디렉토리를 반영하는 파일 시스템을 만드는 데 사용합니다.

+0

큰 경기 침체가 아닌가요? Typo3 자체가 PHP 초기화 - 완료 - 응용 프로그램 - 각 - 요청 자연으로 인해 정말 빠르다고 감안할 때 ... – hurikhan77

0

이것을보십시오.

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

Btw는 PHP에서 루프에서 당신은 일반적으로 PHP 디렉토리 도구 제외 그렇게, 파일 이름 "을 .svn"가 아닌 경우 확인하기 위해 논리 검사를 할 수 있습니다. "" 및 ".."디렉토리에 있습니다. 문제는

+0

나는 그의 문제가 아파치 디렉토리 목록과 관련이 없다고 언급했다. 귀하의 설정은 액세스를 차단하지만 그의 애플리케이션이 자체의 디렉토리 목록을 작성하고 있다면 사용자는 여전히 그것을 볼 수 있습니다. – Zoredache

+0

@ Zoredache thats 왜 내가 아래에 덧글을 추가했습니다. –

0

은 모든 바보을 .svn 폴더는 PHP의 디렉토리 목록에 표시됩니다. 나는 아파치 리스팅을 빌드하는 것을 의미하지 않는다. 내 말은 directoy 목록은 PHP 백엔드로 생성되었습니다.

어떤 응용 프로그램이 디렉터리 항목을 사용하고 있습니까? PHP 백엔드 코드를 조사하고 .svn 디렉토리의 표시를 막기 위해 뭔가를 추가해 보았습니까?

+0

네, 저도 그렇게 생각했습니다 ...하지만 그것은 매우 큰 콘텐츠 관리 시스템 인 typo3의 핵심을 해킹하는 것을 의미 할 것입니다. 나는 이것을 피하고 싶습니다! –

+0

오, 그리고 그런데 typo3이 확장 시스템을 지원하기 때문에이 방법이 효과가 있다는 것을 확신 할 수 없습니다. 즉, 디렉토리 목록을 자체적으로 수행하는 플러그인이 있으므로 모든 확장자를 변경해야합니다. –

+0

그렇다면 .svn 폴더를 숨기는 유일한 선택 인 것 같습니다. 간단히 말해서, 그들이 거기 있지 않은지 확인하십시오. 그 (것)들을 삭제하십시오. – Zoredache

-1

.svn 폴더가 필요하지 않으면 삭제할 수 있습니다.

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

PHP 실행시 실제 폴더에 대한 읽기 권한이없는 경우에도 .svn의 상위 폴더가 읽을 수 있으면 디렉토리는 여전히 파일 목록에 표시됩니다. 당신은 그것으로 들어가서 그 디렉토리 목록을 읽을 수 없을 것입니다. –

+0

두 번째 제안을 사용하여 실제로 svn 디렉토리를 삭제하십시오. 작동하지 않는 이유가 있습니까? –

+0

이것은 분명히 문제를 해결하지 못합니다. Subversion은 버전 관리에 사용되므로 폴더가 제 위치에 있어야합니다. – Caffeine

3

그래서, PHP에서 특별한 디렉토리를 숨길 수있는 방법은 무엇입니까?

만큼 사용자 PHP는 항상 그 디렉토리에있는 모든 파일/디렉토리를 생성 할 디렉토리에 대한 액세스 권한을 읽기에서 실행 될 때

번호

. 특정 프로세스에서 파일을 숨길 방법이 없습니다. ls 및 기타 파일 시스템 도구에서 숨길 수있는 루트 키트를 작성하는 것이 훨씬 쉽습니다.

원하는 옵션은 Typo3이 무시하는 파일을 정의하는 방법이며 시스템 전체에 적용되므로 확장 프로그램에서도 사용됩니다. 그러나 소스 코드를 변경하고 싶지 않고 svn 내보내기를 원하지 않는다고 지정했습니다.

따라서 .svn 디렉터리가 붙어 있습니다.

0

웹에 노출 될 새 디렉토리와 현재 디렉토리를 동기화하는 아주 간단한 응용 프로그램을 찾거나 작성하기 만하면됩니다. 변경 사항을 감시하거나 예외가있는 rsync 나 사용자를 가지고있는 서비스를 사용할 수 있습니다. 이것은 다른 질문에 기초하여 Windows에 있기 때문에 훨씬 간단합니다.

0

ther은 subversion을 통해 파일 관리자 변경 사항을 처리하는 np_subversion이라는 확장 프로그램입니다. 좋은 플러스 그것은 당신을 위해 폴더를 숨길 것입니다

3

짧은 대답은 "쉽지도 간단하지 않거나 sanely"입니다.

대신 체크 아웃이 아닌 export (SVN)으로 웹 사이트를 실행하십시오.

0

내가 설정에 svn의 수출을하지 않으려는 ->을 web_root 그냥 파일

당신이 확실 없애? 그것이 SVN이 설계된 방식입니다. SVN에서 코드를 검사하여 SVN에서 코드를 내보내고 SVN에서 코드를 내보내 배포합니다. 당신이 그것을 좋아하지 않는다면, 아마도 SVN이 올바른 선택이 아닐 것입니다. gahooa가 말했듯이, 아마도 Git으로 전환 할 수 있습니까?

"내 Word 문서를 저장하고 싶지만이 바보 같은 .doc 파일이 내 컴퓨터에 나타나기를 원하지 않습니다."라고 말하는 것과 같습니다. 소프트웨어가 작동하는 방식입니다.

+0

그리고 자식에게 전환하여 해결 될 것인가? – Juliano

+0

나는 작업 사본의 루트에있는 Git의 버전 추적 데이터를 단일 파일 (또는 폴더?)에 저장한다고 생각합니다. Git을 사용하면 "바보 같은 .SVN 폴더가 PHP 디렉토리 목록에 [ing] 표시"를 얻지 못할 것입니다. 크리스가 가진 문제는 무엇입니까? 어리석은 망할 놈의 파일이나 폴더를 얻을 수는 있지만 루트에있는 것뿐입니다. –

+0

즉, 아무 것도 해결하지 못합니다. 여전히 .git 폴더가 있고, 악의적으로, 사용자가 자유롭게 다운로드 할 수 있도록 응용 프로그램의 전체 개정 내역이 들어 있습니다. Svk는 작업 복사본이 버전 데이터 (완전히 다른 장소에 보관 됨) *를 완벽하게 정리하고 * Svn과 완벽하게 호환되므로 Svn이 더 나은 대답이 될 수 있습니다. VCSes를 전환합니다. 이 작은 문제로 인해 VCSes를 전환하는 것은 펑크 난 타이어 때문에 자동차를 교체 할 것을 제안하는 것과 같습니다. – Juliano

0

사라 고몬의 Runkit이 가능합니다. glob()와 같은 함수를 다시 매핑 할 수 있습니다. 그러나 프로덕션 서버에서 실행하는 것이 좋은지 잘 모르겠습니다.

관련 문제