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

时间:2017-07-05 02:12:19

标签: php amazon-web-services elastic-beanstalk imap ebextensions

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

我正在使用运行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将其他phpinfo()文件解析为/etc/php-7.0.d/phpimap.ini,但不会安装IMAP。

第二种方式 使用container_command安装php-imap但我收到错误。

container_commands:
  install_php_imap:
    command: yum install php55-imap

如下图所示出错: error 2nd way

第三种方式 使用合并commands& files,只有成功安装 IMAP 和依赖项(php常用),但它不会激活 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_filesizepost_max_sizeextension=imap.so添加到zzzphp.ini进行测试,只包含两个{ {1}}和upload_max_filesizepost_max_size未包含在extension=imap.so文件中。

enter image description here enter image description here

以下是zzzphp.ini中的脚本phpini.config

.ebextensions

有什么建议吗?

提前致谢。

4 个答案:

答案 0 :(得分:5)

最后是它的工作

在.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

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这也适用于我,也使用ebextensions(我正在使用PHP 7.2运行容器,它应该适用于您的环境,请妥善替换):

packages:
    yum:
        php72-imap: []