问题描述
我在使用命令时遇到问题:
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