如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

How to Install PHP IMAP Extension on AWS Elastic Beanstalk Using Configuration Files (.ebextensions)?

有谁知道如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展?

我正在使用 64 位亚马逊 Linux 2017.03 v2.4.0 运行 PHP 7.0.16

我尝试了以下几种方法:

第一种方式 我试过在配置文件中使用 files 但它不起作用,配置文件名是 .ebextensions 目录中的 phpini.config,设置如下:

files:
  "/etc/php.d/phpimap.ini":
    mode: "000755"
    owner: root
    group: root
    content: |
      extension=imap.so

额外的 .ini 文件通过显示 /etc/php-7.0.d/phpimap.ini 解析为 phpinfo(),但 IMAP 不会安装。

第二种方式 使用 container_command 安装 php-imap 但出现错误。

container_commands:
  install_php_imap:
    command: yum install php55-imap

错误如下图:

第三种方式 使用组合 commandsfiles,它只能成功安装 IMAP 和依赖项(php common)但它不会激活 IMAP

一个。通过添加以下脚本在我的 .ebextensions 中创建 installdependencies.config:

commands:
  install_phpcommon:
    test: '[ ! -f /etc/php.d/curl.ini ] && echo "php common not installed"'
    command:
      yum -y install https://archipelagointernational.s3.amazonaws.com/libs/php70w-common-7.0.16-1.w6.x86_64.rpm

b.通过添加以下脚本在我的 .ebextensions 中创建 phpini.config:

commands:
  install_phpimap:
    test: '[ ! -f /etc/php.d/imap.ini ] && echo "php imap not installed"'
    command:
      yum -y install https://archipelagointernational.s3.amazonaws.com/libs/php70w-imap-7.0.16-1.w6.x86_64.rpm

files:
  "/etc/php.d/imap.ini":
    mode: "000755"
    owner: root
    group: root
    content: |
      extension=imap.so

4th Way 我正在通过将 upload_max_filesizepost_max_sizeextension=imap.so 添加到 zzzphp.ini 并且仅添加两个值来进行测试包括 upload_max_filesizepost_max_sizeextension=imap.so 未包含在 zzzphp.ini 文件中。

下面是 .ebextensions 中的脚本 phpini.config:

commands:
  install_phpimap:
    test: '[ ! -f /etc/php.d/imap.ini ] && echo "php imap not installed"'
    command:
      yum -y install https://archipelagointernational.s3.amazonaws.com/libs/php70w-imap-7.0.16-1.w6.x86_64.rpm

files:
  "/etc/php.d/zzzphp.ini":
    mode: "644"
    content: |
      upload_max_filesize = 50M
      post_max_size = 58M
      extension=imap.so

有什么建议吗?

提前致谢。

您在 php 的配置文件中包含 php-imap 扩展名,但这不足以安装它。

您将不得不向您选择的 EBS 配置方法传递一些信息,告诉它在系统级别安装 php-imap(或在该环境中调用的任何名称)。

终于开始了

在 .ebextensions 中创建两个文件如下:

installdependencies.config,如果需要,安装phpcommon

commands:
  01_install_phpcommon:
    command:
      sudo yum -y install php70-common

phpini.config,安装php imap 并启用imap

commands:
  02_install_phpimap:
    command:
      sudo yum -y install php70-imap

files:
  "/etc/php.d/zzzphp.ini":
    mode: "644"
    content: |
      extension=imap.so

对我来说,phpini.config 中的以下代码解决了这个问题。请注意根据 php 版本的文件夹名称。我的 php 版本是 7.2,因此下面的代码有效:

commands:
  install_phpimap:
    test: '[ ! -f /etc/php-7.2.d/imap.ini ] && echo "php imap not installed"'
    command:
      sudo yum -y install php72-imap

files:
  "/etc/php-7.2.d/imap.ini":
    mode: "000755"
    owner: root
    group: root
    content: |
      extension=imap.so

我遵循了此处的所有建议,但我的命令一直失败,因为我的作曲家需要 imap 支持并且容器命令在 运行 之后... 以下是对我有用的方法:

packages:
    yum:
        php72-imap.x86_64: []

这对我有用,也使用 ebextensions(我是 运行 带有 PHP 7.2 的容器,它应该适用于您的环境,相应地替换):

packages:
    yum:
        php72-imap: []