如何在PHP项目中使用aws包而不使用编写器?



我有一个普通的PHP项目,它使用编写器来安装包,但编写器。Json文件不存在了。vendor文件夹包含所有当前使用的包和autolload .php文件。

现在我需要安装和使用aws包,但是一旦我运行composer require命令,所有旧的包都会从供应商那里被删除。当我从备份中恢复它们时,它们不能工作。应用程序不再识别它们了。

在这种情况下如何使用aws软件包或其他软件包?这是项目的app/init.php文件(不是全部)

define('ROOT_PATH', realpath(__DIR__ . '/..') . '/');
const APP_PATH = ROOT_PATH . 'app/';
const PLUGINS_PATH = ROOT_PATH . 'plugins/';
const THEME_PATH = ROOT_PATH . 'themes/altum/';
......
OTHER LOGIC AND CONSTANTS HERE
......
require_once APP_PATH . 'helpers/Affiliate.php';
/* Autoload for vendor */
require_once ROOT_PATH . 'vendor/autoload.php';

我尝试下载aws文件夹并将其复制到PHP文件中的供应商文件夹中:

use AltumMiddlewaresCsrf;
use AltumTitle;
use AwsS3S3Client;

但是我得到一个错误

PHP Fatal error:  Uncaught Error: Class 'AltumControllersAwsS3S3Client' not found

每个项目可以有多个编译器配置。这不是标准设置,但它是可能的。在你的情况下,它甚至可以帮助你解决你的问题,因为你不需要恢复旧的作曲家。

而不是作曲家的损失。Json文件被忽略,供应商被保留。即:

第一个编写器配置你拥有的是前一个,你失去的那个作曲家。Jsonfile for。但你仍然有vendor文件夹,包括所有的依赖关系和元数据,如vendor/composer/installed.json。因为你已经失去了作曲家。json文件,您现在应该完全存储vendor文件夹。如果你使用的是git,你可能想检查你的.gitignore文件,用/vendor-aws/替换/vendor/条目,这样以前的供应商文件夹就不会被忽略了,你可以把所有的依赖放在配置管理下,作为git的子树。

第二个编写器配置是我们要创建的。它接近默认值,只是供应商目录1不同。我们将其命名为vendor-aws,而不是默认名称vendor。我们从第一个作曲器配置中添加了自动加载器2,因为第二个配置继承了第一个配置:

{
"autoload": {
"files": ["vendor/autoload.php"]
}
"config": {
"vendor-dir": "vendor-aws"
} 
}
验证这个新的composer.json文件并提交它。之后,你需要的法律和其他软件包,无论你想。

将您的新配置发送到测试并集成它,并且可能已经工作了。

这应该继续工作,直到旧供应商无法维护。但在此之前,你可能已经将所有的依赖项重新添加到新的编写器配置文件中,并重新构建供应商文件夹开关。

请记住,vendor/composer/installed.json仍然给你安装的列表,所以你仍然需要识别主包(因为该列表包含所有包,包括依赖项),但你可以很容易地通过在新配置中要求/删除它们来测试。


  1. https://getcomposer.org/doc/06-config.md vendor-dir
  2. https://getcomposer.org/doc/04-schema.md自动装载

相关内容

  • 没有找到相关文章

最新更新