【问题标题】:Dockerfile install amqp failedDockerfile 安装 amqp 失败
【发布时间】:2020-01-08 10:03:08
【问题描述】:

我的 dockerfile 有一些问题...这是问题所在,我有一个基于此图像的 dockerfile -> FROM php:7.1.7-apache

我想为 php 安装 amqp 扩展。我使用的是 pecl,但最近在构建容器时出现错误。

这是我在 dockerfile 中使用的过程

FROM php:7.1.7-apache

MAINTAINER T3ddy <xx@xxx.com>

RUN apt-get update

## TOOLS
RUN apt-get install -y \
    build-essential \
    curl \
    git \
    htop \
    ncdu \
    netcat \
    net-tools \
    telnet \
    unzip \
    vim \
    wget

## PHP AMQP
RUN apt-get install -y librabbitmq-dev libssl-dev
RUN pecl install amqp
RUN docker-php-ext-enable amqp

当我说到 pecl install amqp...

.......
/tmp/pear/temp/amqp/amqp.c: In function 'zm_startup_amqp':
/tmp/pear/temp/amqp/amqp.c:177:55: error: 'AMQP_SASL_METHOD_EXTERNAL' undeclared (first use in this function)
  REGISTER_LONG_CONSTANT("AMQP_SASL_METHOD_EXTERNAL",  AMQP_SASL_METHOD_EXTERNAL, CONST_CS | CONST_PERSISTENT);
                                                       ^
/usr/local/include/php/Zend/zend_constants.h:42:105: note: in definition of macro 'REGISTER_LONG_CONSTANT'
 #define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
                                                                                                         ^
/tmp/pear/temp/amqp/amqp.c:177:55: note: each undeclared identifier is reported only once for each function it appears in
  REGISTER_LONG_CONSTANT("AMQP_SASL_METHOD_EXTERNAL",  AMQP_SASL_METHOD_EXTERNAL, CONST_CS | CONST_PERSISTENT);
                                                       ^
/usr/local/include/php/Zend/zend_constants.h:42:105: note: in definition of macro 'REGISTER_LONG_CONSTANT'
 #define REGISTER_LONG_CONSTANT(name, lval, flags)  zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
                                                                                                         ^
Makefile:194: recipe for target 'amqp.lo' failed
make: *** [amqp.lo] Error 1
ERROR: `make' failed
The command '/bin/sh -c pecl install amqp' returned a non-zero code: 1

这是我得到的错误,我真的不明白为什么它失败了,因为现在它工作正常......任何人都有任何想法。或者关于如何在不使用 pecl 的情况下安装 amqp 的解决方案?

【问题讨论】:

  • 您所说的“从现在开始运行良好”是什么意思?您过去可能安装过所有这些软件包的其他版本吗?
  • 这能回答你的问题吗? Installing AMQP through PECL
  • @NicoHaase 我的意思是它运行良好,没有任何不同的配置......
  • @LinPy 是的,我试过了,但没有解决问题...
  • 即使你没有改变配置,你也没有指定你正在安装的每个包的版本。自上周以来,PECL 上有新版本的 amqp 包,可能它包含错误?

标签: php docker dockerfile amqp


【解决方案1】:

我发布了一个脚本,让您只需以下几行即可安装 amqp PHP 扩展(以及许多其他扩展):

ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

RUN chmod +x /usr/local/bin/install-php-extensions && sync && \
    install-php-extensions amqp

脚本负责 PHP 版本,并安装所有必需的 APT(对于 Debian)或 APK(对于 Alpine)包。

更多详情:https://github.com/mlocati/docker-php-extension-installer

【讨论】:

    【解决方案2】:

    2019 年 1 月 2 日 (1.9.4) 发布了一个新版本的 AMQP,现在看起来不兼容。您可以使用 pecl install amqp-1.9.3 显式安装 1.9.3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-17
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2019-03-14
      相关资源
      最近更新 更多