我无法将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"
我有一种感觉,有一种更简单的方法来完成这项工作但是我被卡住了。有人可以帮忙吗?
答案 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版本上工作而没有太大的变化。