【问题标题】:How can I install a pecl extension like mcrypt in DDEV-Local's web container?如何在 DDEV-Local 的 Web 容器中安装像 mcrypt 这样的 pecl 扩展?
【发布时间】:2020-06-18 15:40:52
【问题描述】:

在 PHP 7.2 及更高版本中,mcrypt 扩展不再可用,但我的项目依赖于它。我知道该项目不应该使用像 mcrypt 这样古老的东西,但我对此没有任何发言权。我知道 mcrypt 是 removed from PHP7.2+,但仍在 pecl

我可以为这个项目做些什么来支持 7.2 及更高版本的 php-mcrypt?

【问题讨论】:

    标签: php pear mcrypt pecl ddev


    【解决方案1】:

    DDEV-Local 支持自定义 Dockerfile,因此您几乎可以将任何您想要的内容添加到 Web 容器中。见docs

    这个 .ddev/web-build/Dockerfile 将从 pecl 安装 mcrypt 扩展。它使用问题中链接中的技术为 PHP_VERSION 中的 PHP 版本构建 php-mcrypt。

    如果你想安装一个不同的 pecl 扩展,你可能只需要少几个包,但想法是一样的。

    
    ARG BASE_IMAGE
    FROM $BASE_IMAGE
    
    ENV PHP_VERSION=7.4
    RUN disable_xdebug 
    RUN if [ ! -f /usr/bin/sed ]; then ln -sf /bin/sed /usr/bin/sed; fi
    RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends --no-install-suggests build-essential make autoconf libc-dev pkg-config php-pear php${PHP_VERSION}-dev libmcrypt-dev
    # The "echo" below just forces accepting the "automatic" configuration, the same as hitting <RETURN>
    RUN echo | sudo pecl install mcrypt
    # Because php7.1-mcrypt is already installed in web container we can just copy its mcrypt.ini
    RUN cp /etc/php/7.1/mods-available/mcrypt.ini /etc/php/${PHP_VERSION}/mods-available/ && phpenmod mcrypt
    
    

    【讨论】:

    • 仅供参考,由于 Ubuntu 世界中的存储库更改,这不适用于 ddev 1.17。
    • 针对当前使用情况进行了小幅更新,似乎工作正常。更新到 php7.4。应该为你工作@DamienMcKenna - 让我知道。
    • 成功了,谢谢!仅供参考,输出给出了许多无法找到各种库的奇怪错误,解决方案确实是将 PHP 更改为 7.4。也就是说,如果您想要/需要运行较旧的 PHP 版本,它仍然可以工作吗?
    • 奇怪的是 7.3 的 phpize 在 /usr/bin/sed 中有一个到 sed 的硬连线路径。无论如何,我稍微更新以处理这个问题并尝试使用 7.3 并且效果很好。
    猜你喜欢
    • 2016-09-28
    • 1970-01-01
    • 2014-01-29
    • 2023-04-08
    • 2017-05-23
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多