未启用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.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \
    && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz


workdir ${workdir}

CMD ["PHP-fpm"]

解决方法

您必须为cli启用apc。 如果启动[{id: 1,messenger_id: 3},{id: 2,messenged_id: 5}] // messenger_id != messenged_id != u_id ,则应该具有以下内容:

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

因此,将此行添加到您的Dockerfile中:

Off