J'ai mis du temps à comprendre que c'était un problème de MAMP ! Pourquoi OPcache serait-il activé par défaut - et nécessiterait-il de bricoler le php.ini pour le désactiver - dans une application qui est censée être utilisée pour tester des sites web ? Bref, j'ai lu tout ce fil de discussion et essayé les différentes solutions.
Voici mes notes sur le fonctionnement de chaque solution et les éléments à prendre en compte pour choisir une solution.
Chaque solution fonctionne de manière autonome ; pas besoin de redondance.
Solution pour le code de la page Web
opcache_reset() ;
<?php opcache_reset(); ?>
- Doit être ajouté dans le code de la page web.
- Force tous les scripts à être rechargés.
- Fonctionne sans redémarrer le serveur MAMP.
Solutions de configuration du serveur
Important : Utilisez le php.ini
dans /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
et non dans /Applications/MAMP/conf/php5.5.3/php.ini
. Adaptez en conséquence si vous utilisez une version différente de PHP.
enable=0
[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
enable=0
- Doit être ajouté sous
[OPcache]
sur php.ini
.
- Désactive OPcache.
- Nécessite le redémarrage du serveur MAMP.
opcache.revalidate_freq=0
[OPcache]
zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1
- Modifier
opcache.revalidate_freq
sous [OPcache]
sur php.ini
.
- Permet à OPcache de vérifier les mises à jour toutes les 0 secondes au lieu de toutes les 60 secondes.
- Nécessite le redémarrage du serveur MAMP.
Mise en commentaire de [OPcache]
;[OPcache]
;zend_extension="/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/opcache.so"
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=4000
;opcache.revalidate_freq=60
;opcache.fast_shutdown=1
;opcache.enable_cli=1
- Commentez l'ensemble du
[OPcache]
section dans php.ini
.
- Supprime OPcache du serveur PHP.
- Nécessite le redémarrage du serveur MAMP.
Considérations
Choisissez la solution du code de la page web si :
- Il suffit de forcer le rafraîchissement du script pour un projet particulier.
- Vous ne voulez pas redémarrer le serveur MAMP.
- Vous ne devez pas modifier le fichier php.ini.
Choisissez une solution de configuration de serveur si :
- Vous voulez désactiver la mise en cache par défaut au lieu de devoir le faire dans chaque projet.
- Vous êtes à l'aise pour modifier le fichier php.ini.
Je préfère personnellement enable=0
car c'est la solution la plus simple pour moi, et j'ai besoin que la mise en cache soit désactivée par défaut.
Références
4 votes
Je sais que ce n'est pas une solution à votre problème, mais je ne suis personnellement pas un grand fan de MAMP, comme, surtout pas quand l'installation d'une pile personnalisée est si facile - Voici un guide assez rapide pour installer une pile en utilisant homebrew : github.com/josegonzalez/homebrew-php
0 votes
@mewm Je n'avais pas réalisé que ça pouvait être si facile. A la vôtre ! Je l'ai utilisé pour démarrer avec nginx en quelques frappes. learnaholic.me/2012/10/10/…