在 php 8.2 上安装 zip 模块 Amazon Linux Elastic Beanstalk

Install zip module on php 8.2 amazon linux elastic beanstalk

提问人:asdfasdfsdfga 提问时间:8/18/2023 更新时间:9/14/2023 访问量:453

问:

我很确定 zip 扩展名默认包含在亚马逊托管的 php elb 映像中。

通常的做法是将这样的配置文件添加到 .ebextensions 中

packages:
    yum:
        php-zip70: []

但是,这不再起作用了。

有什么想法吗?

php amazon-web-services amazon-elastic-beanstalk pecl

评论


答:

1赞 asdfasdfsdfga 8/18/2023 #1

截至 23 年 8 月 17 日,这似乎对我有用

将这样的配置文件添加到 .ebextensions 中

编辑似乎安装命令只能运行 1 次,否则会出现一个错误,因为该模块已经安装,因此会终止 eb 部署。致力于更强大的解决方案

files:
  "/etc/php.d/98_zip.ini":
    mode: "000644"
    owner: root
    group: root
    content: |
      extension=zip.so
commands:
  01_remove_old_config:
    command: "rm -f /etc/php.d/98_zip.ini.bak"
  02_install_stuff:
    command: "dnf -y install libzip libzip-devel"
  03_install_more_stuff:
    command: "pecl install zip"

评论

1赞 Mark Bench 9/14/2023
使用“pecl upgrade”而不是“pecl install”来避免您引用的错误。如果尚未安装,这将安装模块,并成功退出,而不是在已安装时出现错误。
2赞 Mark Bench 9/14/2023 #2

@asdfasdfsdfga给出了一些很好的提示。更现代的方法:

添加文件 .platform/hooks/prebuild/install-php-zip.sh

#!/usr/bin/env bash

yum -y install libzip libzip-devel

# Will enable zip extension in /etc/php.ini
pecl upgrade zip 

请注意,如果已安装 (?!),“pecl install zip”将返回错误代码,从而导致第二次尝试部署时部署失败。请改用升级,如果尚未安装,它将安装,如果已安装,则成功完成。

pecl 命令将在 /etc/php.ini 的顶部插入 'extension=“zip.so”'。

评论

0赞 Gregory 10/30/2023
谢谢!主要问题确实是 pecl install zip 会抛出停止部署的错误,但您的解决方案正在使用较新的平台钩子而不是 .ebextensions,因此为此点赞!:)