当我检查 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 脚本中使用“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