如何从PHP隐藏.SVN目录

时间:2009-03-02 01:31:42

标签: php svn configuration

我正在使用SVN管理我的网站副本。该站点运行typo3安装,使用PHP创建后端。

问题是,所有愚蠢的.SVN文件夹都显示在PHP的目录列表中。我不是指在apache列表中构建。我的意思是由PHP后端创建的directoy列表。

那么,有没有办法隐藏PHP的特殊目录?

[注] 不能更改PHP源代码。 Typo3太大了,每个扩展都使用自己的代码。比SVN导出脚本要费力更多。

克里斯

PS:我不想设置svn导出 - > web_root只是为了摆脱文件。而且我知道我可以阻止apache服务.SVN目录,我这样做了。但是当浏览目录树(由PHP创建)时,它们仍会显示在后端。他们非常烦人......

10 个答案:

答案 0 :(得分:4)

这很难,因为你必须改变文件系统和Typo3之间某些地方的行为。你有:

  

文件系统→操作系统→PHP→Typo3

文件必须保留在文件系统中,并且必须由操作系统保持可见,因此您可以使用SVN。改变Typo3对你来说不是一个选择,改变PHP有许多其他重大的不良后果,你应该避免。所以,你剩下的就是在OS→PHP或PHP→Typo3之间插入一些东西。

第一种情况实际上是可行的,具体取决于您使用的操作系统,以及您是否具有管理员(root)访问权限。 FUSE 是Linux内核的一部分,也是available for many other operating systems。然后,使用保险丝,您可以安装像rofs-filtered这样的过滤器,它允许您过滤哪些文件和目录在已安装的卷中可见。您可以使用它来创建一个镜像SVN结帐目录的文件系统,过滤.svn目录。

答案 1 :(得分:3)

  

那么,有没有办法隐藏PHP的特殊目录?

没有

只要运行用户PHP对目录具有读访问权限,它就会始终生成该目录中的所有文件/目录。没有办法隐藏某些进程中的文件,这是否可能编写一个root工具包来隐藏ls和其他文件系统工具会更容易。

您想要/需要的选项是一种定义Typo3忽略的文件的方法,并且它是系统范围的,因此也被扩展使用。但是您已指定您不想更改源代码,也不想进行svn导出。

你因此坚持使用.svn目录。

答案 2 :(得分:3)

简短的回答是“不容易,简单或理智”。

export的SVN运行网站,而不是结账。

答案 3 :(得分:0)

试试这个。

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

在你的PHP循环中,你可以做一个逻辑检查,看看文件名是不是“.svn”,通常PHP目录工具会这样做,以排除“。”和“..”目录。

答案 4 :(得分:0)

  

问题是,所有愚蠢的.SVN   文件夹显示在目录中   PHP的列表。我不是说   构建在apache列表中。我的意思是   由PHP创建的directoy列表   后端。

目录列表中有哪些应用程序?您是否考虑过查看PHP后端的代码并添加一些内容以防止显示.svn目录?

答案 5 :(得分:0)

只需找到或编写一个非常简单的应用程序,它将使您当前的目录与将暴露给Web的新目录同步。您可以拥有一个监视更改的服务,或者使用带有排除项的rsync或者您拥有的内容。这会更简单,因为根据另一个问题,你在Windows上。

答案 6 :(得分:0)

是一个名为np_subversion的扩展,它将通过subversion处理文件管理员更改。作为一个很好的加号,它会为你隐藏文件夹

答案 7 :(得分:0)

  

我不想设置svn导出 - &gt; web_root只是为了摆脱文件

你确定吗?这就是SVN的设计方法:从SVN中检查代码,然后从SVN导出代码进行部署。如果您不喜欢,那么SVN可能不是正确的选择。正如gahooa所说,也许转向Git?

这有点像说“我想保存我的Word文档,但我不希望这个愚蠢的.doc文件显示在我的计算机上。”这就是软件的工作方式。

答案 8 :(得分:0)

Sara Golemon的Runkit可以做到这一点。您可以重新映射glob()之类的函数。但是,我不确定在生产服务器中运行它是否是个好主意。

答案 9 :(得分:-1)

如果您不需要.svn文件夹,则可以删除它们。

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