我无法添加MailParse PHP扩展(https://pecl.php.net/package/mailparse)到运行PHP 7的Elastic Beanstalk实例。我的目标是将它添加到引导序列中,以便在创建实例时始终安装它。
我的问题是,亚马逊的EB版Linux不提供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">
我觉得有一种更简单的方法可以完成这件事,但我被卡住了。有人能帮忙吗?
创建两个文件:
.eextensions/01mailparse.config
commands:
01install_mailparse:
command: "pecl7 install --force mailparse"
请注意--force
标志的使用。我添加了这一点,因为有时AWS EB会自动重新部署应用程序,如果PECL发现扩展已经安装,它就会失败。
.eextensions/02priority.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前缀)。
请注意,我使用了两个文件。出于某种原因,在同一个文件上使用两个命令会生成部署文件。如果有人能澄清这一点,我将不胜感激。
要添加到@Mauro
的答案中,可以在一个文件中安装mailparse并从/etc/php.ini中删除扩展名。
.eextensions/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"
.eextensions/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版本上工作,而不会有太多更改。