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

I'm searching for the activation location of my PHP extension in my PHP Docker container

提问人:Naseem Toumeh 提问时间:11/17/2023 最后编辑:Naseem Toumeh 更新时间:11/18/2023 访问量:66

问:

当我检查我的 php Docker 容器中激活的扩展时,输出列出了几个 PHP 模块,例如 Core、ctype、curl 等。

扩展似乎已停用 例如在php.ini文件中,当我尝试激活它()时,我遇到以下错误;extension=curl

PHP警告:PHP启动:无法加载动态库“curl” (尝试过:/usr/local/lib/php/extensions/no-debug-non-zts-20210902/curl (/usr/local/lib/php/extensions/no-debug-non-zts-20210902/curl:无法 打开共享对象文件:没有此类文件或目录)

我只是想弄清楚这种激活发生在哪里。

我正在使用php:8.1.25-apache-bullseye

docker-compose php扩展

评论

2赞 Ngob 11/17/2023
您需要在指令中添加“curl”docker-php-ext-install
1赞 Nico Haase 11/17/2023
这回答了你的问题吗?如何通过docker-php-ext-install安装php扩展?
0赞 Naseem Toumeh 11/17/2023
该扩展已在我的 Docker 映像中处于活动状态,因此我不需要激活它。我只是想弄清楚此激活的配置位置。在 php.ini 文件中,扩展似乎已停用,当我尝试激活它时(;extension=curl),我遇到了问题中提到的错误。
0赞 Nico Haase 11/17/2023
请通过编辑来为您的问题添加所有说明。此外,for 的源代码可在 Github 上找到,例如在 github.com/docker-library/php/blob/master/8.1/bookworm/cli/...。为什么需要该文件?docker-php-ext-install
0赞 Naseem Toumeh 11/18/2023
好的,谢谢,我不需要它们都一直处于活动状态,我也需要删除其中一些

答:

0赞 Ngob 11/17/2023 #1

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

您需要在指令中添加“curl”。从 Dockerfiledocker-php-ext-install

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 用法的测试卷曲

评论

0赞 Naseem Toumeh 11/17/2023
该扩展已在我的 Docker 映像中处于活动状态,因此我不需要激活它。我只是想弄清楚此激活的配置位置。在 php.ini 文件中,扩展似乎已停用,当我尝试激活它时(;extension=curl),我遇到了问题中提到的错误。
0赞 Ngob 11/17/2023
这是因为加载的 ini 文件位于目录 /etc/php/8.1/apache2/conf.d 或 /etc/php/8.1/cli/conf.d 中,在这里您可以看到加载的其他扩展。因此,该扩展名为 curl.so。你应该执行 “php -i” 或 “phpinfo();”它显示有关加载的配置的详细信息
0赞 Naseem Toumeh 11/18/2023
好的,它有帮助,谢谢