2017-01-22 77 views
1

我一直无法将MailParse PHP扩展(https://pecl.php.net/package/mailparse)添加到运行PHP 7的Elastic Beanstalk实例。我的目标是将其添加到引导顺序中,以便在创建实例时始终安装它。如何将php ext-mailparse添加到弹性beanstalk实例?

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

我试着去适应各种方法来安装其他的php extenions/modules,但是还没有成功。

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 - “命令:易于得到:命令未找到”

我有一种感觉,有得到这个工作更简单的方法,但我坚持。谁能帮忙?

+0

你有没有想过这个?我被困在同样的事情上。 – Anthony

+0

不是。我最终使用PlancakeEmailParser解析了电子邮件 – PashaPS

回答

0

创建两个文件:

.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前缀)。

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

0

要添加到@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版本上工作而不会有太多变化。

相关问题