在审核之后,我的任务是从我们其中一个网站的Twig 1.x供应商目录中删除无关文件。计划删除/ twig / twig / doc,/ twig / twig / test并查看是否有任何中断。
/twig/twig/ext/twig/run-tests.php或整个“ext”目录怎么样?
有没有人有过为生产环境除草默认Twig 1.x安装的经验?任何帮助或建议都表示感谢。
答案 0 :(得分:1)
正确的操作是更新您网站的布局,以便这些文件位于您的网络服务器的文档根目录之外 - 那么您不必担心要删除的内容和内容离开。您可能有类似这样的内容,您的Web服务器的文档根目录直接指向/path/to/project
:
/path/to/project
/lib
foo.php
bar.php
/twig
/twig
/doc
/test
index.php
这意味着任何人都可以直接请求http://yourdomain.com/twig/twig/test/some_file.php
你想要的更像是这样:
/path/to/project
/public
index.php
/lib
foo.php
bar.php
/twig
/twig
/doc
/test
然后配置您的Web服务器,使其文档根目录为/path/to/project/public
。然后,您的应用代码仍然可以include()
和/twig
/lib
内容,但您的网络服务器不会直接为其提供服务。
答案 1 :(得分:1)
如果你从供应商目录中删除文件,他们会在你下次进行作曲家安装时回来,所以这看起来毫无意义。
你提到的文件(文档和测试)除了占用空间之外没有任何损害,因为它们没有直接调用,但这只是任何软件包管理系统的缺点。就像@Alex所说的那样,只要它们不能公开访问,就没有必要担心。
如果你真的想要没有额外文件的Twig你可以分叉项目,将它移动到你自己的Git仓库然后在你的composer.json中引用它而不是官方的 - 但你会错过来自Twig的任何更新。
答案 2 :(得分:0)
我们正在运行Apache,因此最简单的解决方案是将.htaccess文件添加到顶级供应商目录:
# Prevent non-local access to the vendor directory.
Order deny,allow
Deny from all
目录结构:
/root
/vendor
.htaccess
/twig
...
/includes
...
现在PHP脚本继续具有访问权限,但是外部尝试查看供应商目录中的任何内容会返回403错误。