【问题标题】:How do I add php ext-mailparse to an elastic beanstalk instance?如何将 php ext-mailparse 添加到弹性 beanstalk 实例?
【发布时间】:2017-10-28 20:26:29
【问题描述】:

我无法将 MailParse PHP 扩展 (https://pecl.php.net/package/mailparse) 添加到运行 PHP 7 的 Elastic Beanstalk 实例中。我的目标是将它添加到启动序列中,以便在创建实例时始终安装它.

我的问题是 Amazon 的 Linux for EB 版本不提供 PECL,所以我不确定如何加载它。

我尝试采用各种方法来安装其他 php 扩展/模块,但没有任何成功。

https://packagist.org/packages/php-mime-mail-parser/php-mime-mail-parser - 我尝试通过我的 composer.json 文件包含它,但它失败了,因为没有安装“ext-mailparse”。

http://wiki.cerbweb.com/Installing_PHP_Mailparse_Ubuntu - 我尝试运行这些命令来安装扩展,但安装依赖项的第一个命令失败。

https://serverpilot.io/community/articles/how-to-install-the-php-mailparse-extension.html - "sudo: apt-get: command not found"

我觉得有一种更简单的方法可以完成这项工作,但我被卡住了。有人可以帮忙吗?

【问题讨论】:

  • 你有没有想过这个问题?我被困在同一件事上。
  • 不。我最终使用 PlancakeEmailParser 解析了电子邮件

标签: php amazon-web-services composer-php amazon-elastic-beanstalk


【解决方案1】:

创建两个文件:

.ebextensions/01mailparse.config

commands:
  01install_mailparse:
    command: "pecl7 install --force mailparse"

注意--force 标志的使用。我添加了这一点,因为有时 AWS EB 会自动重新部署应用程序,如果 PECL 发现扩展程序已安装,则会失败。

.ebextensions/02prioritize.config

commands:
  01change_mailparse_load_priority:
    command: "sed '/extension=\"mailparse.so\"/d' /etc/php.ini > /etc/php.ini && echo 'extension=\"mailparse.so\"' > /etc/php-7.0.d/zz_mailparse.ini"

这会从 php.ini 文件中删除 mailparse 扩展注册(PECL 在顶部添加了行,很奇怪)并将其注册为在列表末尾加载(zz 前缀)。

请注意,我使用了两个文件。出于某种原因,在同一个文件上使用两个命令正在制作部署文件。如果有人能澄清这一点,我将不胜感激。

【讨论】:

    【解决方案2】:

    要添加到 @Mauro 的答案,以下允许您安装 mailparse 并在单个文件中从 /etc/php.ini 中删除扩展名。

    .ebextensions/01_mailparse.config (PHP 7.x)

    commands:
        01_mailparse_install:
            command: |
                pecl7 install --force mailparse
                sed -i '/extension="mailparse.so"/d' /etc/php.ini
    
    files:
        "/etc/php.d/mailparse.ini":
            mode: "000644"
            owner: root
            group: root
            content: |
                extension="mailparse.so"
    

    .ebextensions/01_mailparse.config (PHP 5.6)

    commands:
        01_mailparse_install:
            command: |
                pecl install --force mailparse-2.1.6
                sed -i '/extension="mailparse.so"/d' /etc/php.ini
    
    files:
        "/etc/php.d/mailparse.ini":
            mode: "000644"
            owner: root
            group: root
            content: |
                extension="mailparse.so"
    

    | 允许多行值。我修改了 sed 命令并添加了 files 块,以使其无需太多更改即可在多个 PHP 版本上工作。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2022-01-09
      • 2018-02-23
      • 2017-03-26
      • 2018-12-22
      • 2021-06-12
      • 2018-02-27
      • 2012-10-23
      相关资源
      最近更新 更多