作曲家如何保护文件created/imported?

How to protect files created/imported by composer?

我刚刚安装了 composer 来管理我的项目的依赖项。

但我遇到了一个问题:如何保护 composer 创建的文件?

vendor的根目录下不应该有一个.htaccess文件吗? (对于我的情况,在 libsproduction 文件夹的根目录)

这是我的 composer.json 文件:

{
  "config": { 
    "vendor-dir": "libsproduction/" 
  },
  "require": {
    "spipu/html2pdf": "^5.2",
    "phpmailer/phpmailer": "^6.1",
    "tinymce/tinymce": "^5.2",
  }
}

Composer 文件(vendor 目录以及 composer.jsoncomposer.lock 文件本身)不应位于可公开访问的位置。

但是这样做的方法不是在与 Apache 不同的网络服务器下创建 .htaccess 或类似的东西。您应该做的是提供一个与包含这些目录和文件的目录不同的目录。也不会像您那样更改 vendor 名称。

大多数(如果不是全部)基于作曲家的框架通常这样做的方式是创建一个 "public" 或 "web" 目录,这是您将 Web 服务器配置到的目录实际服务,并将您的应用程序入口文件放在那里。

例如

project-root-dir
├── public
│  └── index.php
├── vendor/
├── composer.json
├── composer.lock

在这种情况下,您的 Web 服务器应指向的目录是 public。因此访问用户无法直接看到不在该目录中的任何内容。

要加载 composer 的自动加载器以便所有包 类 可用,您只需执行以下操作:

// public/index.php
require dirname( __DIR__ ) . '/vendor/autoload.php';

/* your application/script logic goes here /*

通过这种方式,您还可以将不应由用户访问的任何其他文件(配置、日志、缓存等)放在可公开访问的目录的上一级,并且您可以减少保护敏感文件的工作量。