APCu未启用?铁路超高创建装置



我在使用以下命令时遇到问题:

php bin/console d:f:l

[Symfony  Component  Cache  Exception  CacheException]
APCu is not activated

而Symfony 3很好地识别了acpu扩展。有关信息,我正在docker上,我已经成功安装了ACPu扩展。

Symfony可以很好地检测缓存,但我不知道为什么脚本不想启动。我试图从其他DockerFile中获得灵感,但仍然存在同样的问题。

我的PHP DockerFile:

FROM php:7.2-fpm-alpine
MAINTAINER Zakariae Filali <filali.zakariae@gmail.com>
ARG TIMEZONE
ENV WORKDIR "/var/www/symfony"
ENV EXT_APCU_VERSION=5.1.17
RUN apk upgrade --update && apk --no-cache add 
git autoconf tzdata openntpd libcurl curl-dev coreutils 
libmcrypt-dev freetype-dev libxpm-dev libjpeg-turbo-dev libvpx-dev 
libpng-dev libressl-dev libxml2-dev postgresql-dev icu-dev 
yarn
RUN docker-php-source extract 
# ext-apcu
&& mkdir -p /usr/src/php/ext/apcu 
&& curl -fsSL https://github.com/krakjoe/apcu/archive/v$EXT_APCU_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/apcu --strip 1 
&& docker-php-ext-install apcu 
# cleanup
&& docker-php-source delete
RUN apk add --update --no-cache --virtual .build-dependencies $PHPIZE_DEPS 
&& pecl install apcu 
&& docker-php-ext-enable apcu 
&& pecl clear-cache 
&& apk del .build-dependencies
RUN apk add --no-cache --virtual build-dependencies icu-dev libxml2-dev freetype-dev libpng-dev libjpeg-turbo-dev g++ make autoconf
RUN docker-php-ext-configure intl 
&& docker-php-ext-configure opcache 
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ 
--with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 
--with-xpm-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) gd iconv pdo pdo_mysql pdo_pgsql curl 
bcmath mbstring json xml xmlrpc zip intl opcache

RUN yes '' | pecl install -f mcrypt
RUN echo "extension=mcrypt.so" > /usr/local/etc/php/conf.d/mcrypt.ini
RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} > /etc/timezone 
&& printf '[PHP]ndate.timezone = "%s"n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini 
&& "date"

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

RUN rm -rf /var/cache/apk/* 
&& find / -type f -iname *.apk-new -delete 
&& rm -rf /var/cache/apk/*
RUN mkdir -p ${WORKDIR}
RUN chown www-data:www-data -R ${WORKDIR}
RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") 
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/alpine/amd64/$version 
&& mkdir -p /tmp/blackfire 
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire 
&& mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so 
&& printf "extension=blackfire.sonblackfire.agent_socket=tcp://blackfire:8707n" > $PHP_INI_DIR/conf.d/blackfire.ini 
&& rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz

WORKDIR ${WORKDIR}
CMD ["php-fpm"]

您必须为cli启用apc。如果你启动php -i,你应该有这样的东西:

apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.entries_hint => 4096 => 4096
apc.gc_ttl => 3600 => 3600
apc.mmap_file_mask => no value => no value
apc.preload_path => no value => no value
apc.serializer => php => php
apc.shm_segments => 1 => 1
apc.shm_size => 32M => 32M
apc.slam_defense => On => On
apc.smart => 0 => 0
apc.ttl => 0 => 0
apc.use_request_time => On => On
apc.writable => /tmp => /tmp

您可以看到apc.enable_cli设置为Off

因此,将这一行添加到Dockerfile:

RUN echo "apc.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini

最新更新