gpt4 book ai didi

php - 使用 Composer 要求多个子目录共享文件

转载 作者:可可西里 更新时间:2023-10-31 22:42:18 25 4
gpt4 key购买 nike

我有一个 GoDaddy 共享主机网站。

根文件夹是html

我将其用作测试服务器,因此 html 有几个子目录,如 /site1/site2/site3

我想安装和使用 parse.com PHP SDK,我是 following this guide to set it up

我已经在服务器上安装了 Composer :

-bash-4.2$ curl -sS https://getcomposer.org/installer | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/content/08/555555/html/composer.phar
Use it: php composer.phar

我创建了包含以下内容的 composer.json:

{
"require" : {
"parse/php-sdk" : "~1.1.*"
}
}

据我了解,我应该将此文件放在我的项目文件夹中,这似乎意味着网站的根文件夹,例如我的示例中的site1,然后是cd 到该目录并“使用安装参数执行 Composer ”。

但是,我希望能够在每个站点中包含解析 SDK,例如 /site1/site2/site3

我是否需要在每个站点文件夹中添加一个 composer.json,将 parse 文件夹放在 html 中并将路径更改为 "../parse/php-sdk": "~1.1.*",或者是否有更好的设置方法?

最佳答案

Composer 不是用来充当包管理器的,它是一个依赖管理器。不同之处在于,包管理器将包安装在中央位置供所有人使用,而依赖项管理器只在本地安装一个应用程序。

Composer 也可以将包安装到一个中央位置:composer global require vendor/package,它会在那里创建一个可供应用程序使用的自动加载器。当涉及到多个应用程序使用的不仅仅是集中安装的包时,问题就开始了。

第一个问题:更新。推进到一个重要的新版本(即不仅是错误修复,应该向后兼容,还有新功能和包内部工作中可能不兼容的更改)可能需要在应用程序中进行一些调整。现在随着中央 包的更新,此类调整必须同时在所有 应用程序中完成。这并非不可能,但通常它会抑制更新,因为没有人愿意在所有其他应用程序中做额外的工作。

第二个问题:当使用只应在本地为一个应用程序安装的包,但需要集中安装的包的组件时,Composer 将无法识别此安装。你会安装这个包两次 - 本地安装不需要与中央安装相同的版本 - 这将导致各种可能的不兼容问题,这真的很难调试,因为突然自动加载的顺序影响可能的结果。

虽然在每个应用程序中多次重复安装相同的软件包(即使是在同一版本中)听起来是个坏主意,因为这会浪费文件空间,但事实恰恰相反:文件空间很便宜,工作应用程序被认为是值得的超过硬盘驱动器上重复文件的成本。而且单个应用程序管理和更新依赖项的便利性很难与集中安装相提并论。

PEAR 使用中心方法。维护者花费了大量的工作来保证与每个单独版本的包的向后兼容性,以至于即使在今天,常规的 PEAR 包也可以向后兼容 PHP 4.0。今天没有人喜欢使用 PEAR,甚至在 Composer 出现之前也不喜欢使用它。我将此视为不在中央位置安装软件包的有力指标。

关于php - 使用 Composer 要求多个子目录共享文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com