如何将php ext-mailparse添加到弹性beanstalk实例?

时间:2017-01-22 21:15:43

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

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

我的问题是亚马逊的Linux版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"

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

2 个答案:

答案 0 :(得分:-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前缀)。

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

答案 1 :(得分:-1)

要添加到@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命令并添加了文件块以允许它在多个PHP版本上工作而没有太大的变化。