4

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

我正在使用运行 PHP 7.0.16 的 64 位 Amazon Linux 2017.03 v2.4.0

我尝试了以下几种方法:

第一种方法 我尝试files在配置文件中使用但它不起作用,配置文件名位于以下设置phpini.config的目录中:.ebextensions

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

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

第二种方式用于安装 php- imapcontainer_command但我收到错误。

container_commands:
  install_php_imap:
    command: yum install php55-imap

错误如下图: 错误第二种方式

第三种方式 使用组合commands& files,仅成功安装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

湾。通过添加以下脚本在我的 .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

第四种方法我通过添加upload_max_filesize,post_max_sizeextension=imap.soto进行测试,zzzphp.ini并且只包含两个值,即upload_max_filesizeand post_max_size。未extension=imap.so包含在zzzphp.ini文件中。

在此处输入图像描述 在此处输入图像描述

以下是中的phpini.config脚本.ebextensions

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

有什么建议么?

提前致谢。

4

5 回答 5

6

最后是工作

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

installdependencies.config,如果需要,安装 php common

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
于 2017-07-10T07:08:24.930 回答
2

对我来说,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
于 2019-02-24T13:15:42.873 回答
0

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

packages:
    yum:
        php72-imap: []
于 2019-09-23T16:15:35.490 回答
0

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

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

于 2017-07-05T03:32:58.397 回答
0

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

packages:
    yum:
        php72-imap.x86_64: []
于 2019-05-22T17:43:45.563 回答