Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / PHP / Installer l'extension PHP APC sur Debian

Installer l'extension PHP APC sur Debian

Par Pierre-Yves Landuré Dernière modification 27/02/2017 13:18

APC, acronyme de Alternative PHP Cache, est un cache d'op-code améliorant les performances du code PHP. C'est un outil incontournable si vous utilisez de nombreuses applications PHP.

Ce guide est testé sur:

  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy
  • Ubuntu 13.10 Saucy Salamander

Avertissement

Cet article est incompatible avec ces guides:

Prérequis

Ce guide nécessite:

Installation depuis les dépôts

Détectez le proxy de commande (command ou sudo):

cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'

Installez le logiciel:

if [ -n "$(command apt-cache pkgnames php5-apc)" \
-a -n "$(command dpkg --status "php5-common" | command grep "dotdeb")" ]; then
# Check for dot-deb packages.
${cmdProxy} apt-get -y install php5-apc
elif [ -n "$(command apt-cache pkgnames php-apc)" ]; then
${cmdProxy} apt-get -y install php-apc
fi

Rechargez la configuration :

test -e '/etc/init.d/php5-fpm' && ${cmdProxy} service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && ${cmdProxy} service 'apache2' 'force-reload'

Configuration

Détectez le chemin des fichiers de configuration des extensions PHP:

MODS_CONF_PATH='/etc/php5/conf.d'
test -d '/etc/php5/mods-available' \
  && MODS_CONF_PATH='/etc/php5/mods-available'

La configuration par défaut de APC est suffisante. Assurez-vous qu'il soit activé, et activez l'option permettant de suivre la progression des envois de fichiers:

echo '; APC Configuration
; priority=50
apc.enabled = 1
; Memory allocated to APC. Use Munin or APC Info to see if more is needed.
apc.shm_size="96M"
; rfc1867 allow file upload progression display.
apc.rfc1867 = on' \
| ${cmdProxy} tee "${MODS_CONF_PATH}/apc-config.ini"
[[ -x '/usr/sbin/php5enmod' ]] && ${cmdProxy} php5enmod 'apc-config/50'

Si nécessaire, appliquez les configurations spécifiques à PHP-FPM:

if [ -e '/etc/init.d/php5-fpm' ]; then
echo '; Enable APC ressources sharing.
; priority=50
apc.mmap_file_mask=/apc.shm.XXXXXX' \
    | ${cmdProxy} tee "${MODS_CONF_PATH}/apc-fpm.ini"
[[ -x '/usr/sbin/php5enmod' ]] && ${cmdProxy} php5enmod 'apc-fpm/50'
fi

Remarque: Si partager les données d'APC entre différents sites pose problème (de sécurité, par exemple), la solution est de créer un pool FPM par site. L'inconvénient majeur est que cela complexifie notablement la configuration du serveur.

Rechargez la configuration :

test -e '/etc/init.d/php5-fpm' && ${cmdProxy} service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && ${cmdProxy} service 'apache2' 'force-reload'

Installation manuelle

Si le paquet Debian n'existe pas, installez l'extension manuellement.

Détectez le chemin des fichiers de configuration des extensions PHP:

MODS_CONF_PATH='/etc/php5/conf.d'
test -d '/etc/php5/mods-available' \
  && MODS_CONF_PATH='/etc/php5/mods-available'

Préparation de l'environnement

installez les logiciels nécessaires:

command apt-get install php5-dev make php-pear apache2-prefork-dev libpcre3-dev

Mettez à jour PEAR:

command pear channel-update pear.php.net
command pear upgrade PEAR

Mettez à jour PECL:

command pecl channel-update pecl.php.net
command pecl upgrade

Mise en place du logiciel

Installez l'extension:

command pecl install 'apc' --with-apxs='/usr/bin/apxs2'

Activez l'extension:

echo "; configuration for php APC module
; priority=20
extension=apc.so" > "${MODS_CONF_PATH}/apc.ini"
command type -f 'php5enmod' &>'/dev/null' && command php5enmod 'apc'

Rechargez la configuration:

test -e '/etc/init.d/php5-fpm' && command service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && command service 'apache2' 'force-reload'

Vous pouvez maintenant configurer APC.

Finalisation

La procédure d'installation manuelle recommande:

Remerciements

Xavier Daguet a écrit :
21/01/2013 17:11
Dans mon cas la ligne apc.shm_size="96M" doit être modifiée à apc.shm_size="96" (sans le M) afin de ne pas avoir d'erreur HTTP 500 : [apc-error] apc_mmap: mmap failed: Cannot allocate memory.
Pierre-Yves Landuré a écrit :
21/01/2013 17:24
Bonjour,

pouvez-vous me dire quelle quantité de mémoire est disponible sur votre serveur ? Ce message d'erreur ressemble à un problème de mémoire insuffisante.

Sincèrement,
Pierre-Yves Landuré
Ajouter un commentaire

Vous pouvez ajouter un commentaire en complétant le formulaire ci-dessous. Le format doit être plain text. Les url et les courriels sont transformés en liens cliquables. Les commentaires sont modérés.

Mots-clés associés : , ,