Twig 1.x - 我可以安全地删除哪些文件用于生产?

Twig 1.x - what files can I safely remove for production?

审核后,我的任务是从我们其中一个站点的 Twig 1.x 供应商目录中删除无关文件。计划删除 /twig/twig/doc、/twig/twig/test 并查看是否有任何问题。

/twig/twig/ext/twig/run-tests.php 或整个 "ext" 目录呢?

有没有人有为生产环境清除默认 Twig 1.x 安装的经验?非常欢迎任何帮助或建议。

正确的做法是更新您网站的布局,使这些文件位于您的网络服务器的文档根目录之外——这样您就不必担心删除什么和保留什么。你可能有这样的事情,你的网络服务器的文档根目录直接指向 /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

然后配置您的网络服务器,使其文档根目录为 /path/to/project/public。那么您的应用程序代码仍然可以 include() /twig/lib 中的内容,但您的 Web 服务器不会直接为它们提供服务。

如果您从 vendor 目录中删除文件,它们会在您下次安装 composer 时返回,所以这似乎毫无意义。

您提到的文件(文档和测试)除了占用 space 之外没有造成任何危害,因为它们没有被直接调用,但这只是任何包管理系统的缺点。正如@Alex 所说,只要它们不可公开访问,就无需担心。

如果你真的想要没有额外文件的 Twig,你可以 fork 这个项目,把它移到你自己的 Git 仓库中,然后在你的 composer.json 中引用它而不是官方的 - 但你会错过任何来自 Twig 的更新。

我们 运行 在 Apache 上,所以最简单的解决方案是简单地将 .htaccess 文件添加到顶级供应商目录:

# Prevent non-local access to the vendor directory.
Order deny,allow
Deny from all

目录结构:

/root
    /vendor
        .htaccess
        /twig
        ...
    /includes
        ...

现在 PHP 脚本继续具有访问权限,但外部尝试查看供应商目录中的任何内容 return 出现 403 错误。