所以我试图建立一个 docker 服务器来与一些与 PHP 7 不兼容的旧应用程序一起使用
FROM php:5.6-apache
RUN apt-get -y update && apt-get upgrade -y
# Install tools && libraries
RUN apt-get -y install --fix-missing apt-utils nano wget dialog \
build-essential git curl libcurl3 libcurl3-dev zip \
libmcrypt-dev libsqlite3-dev libsqlite3-0 mysql-client \
zlib1g-dev libicu-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& rm -rf /var/lib/apt/lists/*
# Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# PHP5 Extensions
RUN docker-php-ext-install curl \
&& docker-php-ext-install tokenizer \
&& docker-php-ext-install json \
&& docker-php-ext-install mcrypt \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install pdo_sqlite \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-ext-install -j$(nproc) intl \
&& docker-php-ext-install mbstring \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& pecl install xdebug-2.5.5 && docker-php-ext-enable xdebug \
&& echo "xdebug.remote_enable=1" >> /usr/local/etc/php/php.ini
# Enable apache modules
RUN a2enmod rewrite headers
EXPOSE 80
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)
一切似乎都正确,它构建时没有错误。
除了 mysqli 和 PDO 都不能工作之外,它们没有被启用。我不能使用它们,我在 php_info 上也看不到,它们真的没有被加载
php_info 说它正在加载这些额外的 inis:
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini, /usr/local/etc/php/conf.d/docker-php-ext-intl.ini, /usr/local/etc/php/conf.d/docker-php-ext-mcrypt.ini, /usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini, /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini, /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini, /usr/local/etc/php/conf.d/docker-php-ext-zip.ini
Run Code Online (Sandbox Code Playgroud)
检查 pdo_mysql.ini 和 docker-php-ext-pdo_mysql.ini,exnstions 被正确加载。仍然,他们不在那里
不知道还能尝试什么。我究竟做错了什么?
小智 1
您只需发出命令即可启用它,因此在您执行EXPOSE 80
命令之前您可以执行以下操作
RUN echo "extension=pdo_mysql" >> /usr/local/etc/php/php.ini \
&& service apache2 restart
Run Code Online (Sandbox Code Playgroud)
这会将启用扩展代码调整到 php.ini 中并重新启动 apache2,以便加载新配置