首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >隐藏文档根目录中的composer供应商文件夹

隐藏文档根目录中的composer供应商文件夹
EN

Stack Overflow用户
提问于 2018-06-09 02:02:09
回答 2查看 3.8K关注 0票数 6

我们已经安装了大约24个内部web应用程序。几年后的今天,我想开始使用来自外部来源的包,并使用管理包的Composer来安装项目。我以前从来不需要它,但我想尝试添加一些额外的功能,这些网站。

问题是这些内部网站都不是用/project/public_html/ structures设置的。文档根目录是WAMP中的主目录。

因此,DOCUMENT_ROOT目录如下所示:

代码语言:javascript
复制
c:\wamp64\www\my-site1\
c:\wamp64\www\my-site2\
c:\wamp64\www\my-site3\

每个项目都是不同的,可能需要不同的php包。我希望能够使用Composer来管理这些包。

运行Composer时,它会创建一个供应商文件夹。我知道好的做法是我们应该把它放在这样的结构中:

代码语言:javascript
复制
C:\wamp64\www\my-project1\vendor  //for vendor code
C:\wamp64\www\my-project1\public_html //for DOCUMENT_ROOT

但我最终得到的结论是:

代码语言:javascript
复制
C:\wamp64\www\my-site1\vendor  //for vendor code specific to site1
C:\wamp64\www\my-site2\vendor  //for vendor code specific to site2

我是否可以使用apache重写规则从公共web中隐藏此供应商文件夹和所有子文件夹?的想法是,它将拒绝用户键入http://my-site1/vendor/somevendor/somefile.php,但仍然允许我的脚本在需要时要求或包括和使用该目录中的文件。

或者,我可以将供应商放在此处:

代码语言:javascript
复制
 C:\wamp64\www\vendor 

然后以某种方式只包含我想要的供应商项目?并不是所有的供应商包都到每个项目中,而是以某种方式指定我想要在每个站点上使用的类或包。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-09 02:11:19

您只需使用以下命令将.htaccess文件放在供应商文件夹中:

代码语言:javascript
复制
Order allow,deny
Deny from all

在浏览器中输入url将无法访问供应商文件夹中的文件,但可用于您的脚本。

票数 9
EN

Stack Overflow用户

发布于 2018-06-09 03:43:32

您可以考虑将供应商保留在具有以下文件结构的docroot之外:

代码语言:javascript
复制
c:\wamp64\www\my-site1\
c:\wamp64\www\my-site2\
c:\wamp64\www\my-site3\
c:\wamp64\www\vendors\my-site1\
c:\wamp64\www\vendors\my-site2\
c:\wamp64\www\vendors\my-site3\

composer.json中配置供应商目录

代码语言:javascript
复制
"config": {
    "vendor-dir": "../vendors/my-site1"
},

并在您的index.php中包含自动加载器

代码语言:javascript
复制
require __DIR__ . '/../vendors/my-site1/autoload.php';

如果您不能更改供应商目录,您可以使用mod重写来禁止访问vendor目录。将其放入您的主.htaccess文件中(例如c:\wamp64\www\my-site1\.htaccess

代码语言:javascript
复制
RewriteEngine on

RewriteRule ^vendor/(.*)?$ / [F,L]
RewriteRule ^composer\.(lock|json)$ / [F,L]

vendor目录中使用.htaccess也可以工作,但很容易意外删除此文件-通常vendor目录在VCS中没有版本,composer的许多问题可以通过“删除vendor目录并再次运行composer install”来解决(这也会删除您的.htaccess并使vendor目录可从web访问)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档