【发布时间】:2019-04-10 07:17:13
【问题描述】:
尝试在运行 Amazon Linux 的 Elastic Beanstalk 中安装 MongoDB PHP 驱动程序。已经使用以下代码在 .ebextensions 文件夹中创建了一个配置文件:
container_commands:
01installMongoExtension:
command: 'printf "\n" | pecl install -f mongo'
ignoreErrors: true
得到一个错误:
Application deployment failed at 2018-11-06T20:01:32Z with exit status 2 and error: Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh failed.
以下内容:
Problem 1
- Installation request for alcaeus/mongo-php-adapter 1.1.3 -> satisfiable by alcaeus/mongo-php-adapter[1.1.3].
- alcaeus/mongo-php-adapter 1.1.3 requires ext-mongodb ^1.2.0 -> the requested PHP extension mongodb is missing from your system.
Problem 2
- Installation request for mongodb/mongodb 1.1.2 -> satisfiable by mongodb/mongodb[1.1.2].
- mongodb/mongodb 1.1.2 requires ext-mongodb ^1.2.0 -> the requested PHP extension mongodb is missing from your system.
Problem 3
- alcaeus/mongo-php-adapter 1.1.3 requires ext-mongodb ^1.2.0 -> the requested PHP extension mongodb is missing from your system.
- doctrine/mongodb 1.6.0 requires ext-mongo ^1.6.7 -> satisfiable by alcaeus/mongo-php-adapter[1.1.3].
- Installation request for doctrine/mongodb 1.6.0 -> satisfiable by doctrine/mongodb[1.6.0].
不知道从哪里开始,看到配置文件应该安装驱动程序......
想补充一点,我看到 Jenkins 在 /var/app/ondeck/ 目录中构建应用程序的 repo 文件。
【问题讨论】:
-
嗯。那应该是
pecl mongodb,因为mongo包已被弃用,依赖错误实际上是ext-mongodb,这当然是较新的包。如果ignoreErrors也被删除,您可能会收到有关弃用的消息。另外请阅读ALL文档参考MongoDB PHP Driver,因为对多依赖安装的混淆确实很常见。 -
好的,我会尝试,但有趣的是当我查看 cat
/var/log/awslogs.log时,安装命令甚至没有运行。有没有办法让 Beanstalk 在 Composer 尝试安装它的依赖项之前运行.ebextensions配置文件? -- 这有意义吗? -
可能不会。但重点是它是“错误的包装”。正如我指出的那样,您“忽略错误”,因此日志中没有任何内容并不奇怪。
-
谢谢,我会删除那个忽略命令,看看有没有什么问题。
标签: php mongodb amazon-web-services amazon-elastic-beanstalk php-5.6