我正在 PHP Docker 容器中搜索 PHP 扩展的激活位置

问题描述 投票:0回答:1

当我检查 php Docker 容器中激活的扩展时,输出列出了几个 PHP 模块,例如 Core、ctype、curl 等。但是,这些扩展在我的 php.ini 文件中显示为非活动状态。例如,

我的 Docker 文件

FROM php:8.1.25-apache-bullseye
WORKDIR /var/www/t3coredev

## Install system dependencies
RUN apt-get update \
    && apt-get install -y \
    libxml2-dev \
    libzip-dev \
    zlib1g-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libjpeg-dev \
    libltdl-dev \
    libicu-dev \
    libmemcached-dev \
    libssl-dev \
    libonig-dev \
    iputils-ping \
    vim \
    wget \
    curl \
    git \
    build-essential \
    libcurl4 \
    libcurl4-openssl-dev \
    && rm -rf /var/lib/apt/lists/*

# Install Composer manually
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

## Install PHP extensions
RUN docker-php-ext-configure gd \
    --with-freetype=/usr/include/ \
    --with-jpeg=/usr/include/ \
    && docker-php-ext-install \
    pdo \
    session \
    filter \
    mbstring \
    intl \
    fileinfo \
    gd \
    zip \
    xml \
    dom \
    pdo_mysql

## install ImageMagick https://www.linuxcapable.com/how-to-install-imagemagick-on-debian-linux/
#RUN git clone https://github.com/ImageMagick/ImageMagick.git /usr/local/src/ImageMagick \
#    cd /usr/local/src/ImageMagick \
#    ./configure \
#    make \
#    make install \
#    sudo ldconfig /usr/local/lib

RUN a2enmod alias \
    && a2enmod authz_core \
    && a2enmod deflate \
    && a2enmod expires \
    && a2enmod filter \
    && a2enmod headers \
    && a2enmod rewrite \
    && a2enmod setenvif


当我尝试激活 php.ini 中的“curl”扩展时,遇到错误:

PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20210902/curl (/usr/local/lib/php/extensions/no-debug-non-zts-20210902/curl: cannot open shared object file: No such file or directory), 

我需要帮助才能找到这些扩展的正确激活位置。谢谢你。”

php docker docker-compose php-extension
1个回答
0
投票

我知道您尝试在 php 脚本中使用“curl”函数

您需要在

docker-php-ext-install
指令中添加“curl”。来自您的 Dockerfile

FROM php:8.1.25-apache-bullseye
WORKDIR /var/www/t3coredev

## Install system dependencies
RUN apt-get update \
    && apt-get install -y \
    libxml2-dev \
    libzip-dev \
    zlib1g-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libjpeg-dev \
    libltdl-dev \
    libicu-dev \
    libmemcached-dev \
    libssl-dev \
    libonig-dev \
    iputils-ping \
    vim \
    wget \
    curl \
    git \
    build-essential \
    libcurl4 \
    libcurl4-openssl-dev \
    && rm -rf /var/lib/apt/lists/*

# Install Composer manually
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

## Install PHP extensions
RUN docker-php-ext-configure gd \
    --with-freetype=/usr/include/ \
    --with-jpeg=/usr/include/ \
    && docker-php-ext-install \
    pdo \
    session \
    filter \
    mbstring \
    intl \
    fileinfo \
    gd \
    zip \
    xml \
    dom \
    curl \
    pdo_mysql

## install ImageMagick https://www.linuxcapable.com/how-to-install-imagemagick-on-debian-linux/
#RUN git clone https://github.com/ImageMagick/ImageMagick.git /usr/local/src/ImageMagick \
#    cd /usr/local/src/ImageMagick \
#    ./configure \
#    make \
#    make install \
#    sudo ldconfig /usr/local/lib

RUN a2enmod alias \
    && a2enmod authz_core \
    && a2enmod deflate \
    && a2enmod expires \
    && a2enmod filter \
    && a2enmod headers \
    && a2enmod rewrite \
    && a2enmod setenvif

完成后,你应该可以运行了

docker build . -t myimagetag

然后测试curl是否启用

docker run myimagetag php -r 'echo curl_exec(curl_init("https://dog.ceo/api/breeds/image/random"));'

用于 php CLI 使用的测试curl

© www.soinside.com 2019 - 2024. All rights reserved.