130 votes

Arrêter la mise en cache pour PHP 5.5.3 dans MAMP

J'ai installé MAMP sur un nouveau Macbook avec PHP 5.5.3.

Le rechargement et l'actualisation ne font rien. Toujours rien. Je cherche pendant quelques minutes à comprendre ce qui ne va pas, je reviens et j'actualise. Cela fonctionne. Mais qu'est-ce qui se passe ?

Je suis allé dans le php.ini et j'ai désactivé tous les nouveaux OPcache et mis le temps de cache par défaut à 0. J'ai ajouté des en-têtes au document pour forcer l'absence de cache. Toujours le même problème. Que se passe-t-il ici ?

L'onglet réseau affiche une requête HTTP 200, de sorte que tout nouveau HTML dans l'onglet index.php s'affiche correctement, mais le nouveau PHP qui doit être affiché par le serveur est retardé et n'est affiché qu'après un laps de temps prédéterminé que je ne sais pas comment modifier. Que se passe-t-il ?

J'ai vérifié cela dans Safari aussi, donc c'est certainement un problème de serveur qui empêche le fichier de s'afficher.

Fait intéressant cependant, si je vais dans MAMP et que je change la version de PHP pour l'ancienne (PHP 5.2 ou quelque chose comme ça), le site s'affiche normalement, sans problème de mise en cache. Si je passe à PHP 5.5, il se bloque. Dans les préférences de MAMP, les options de mise en cache pour la version 5.5 n'existent même pas et sont automatiquement désactivées.

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/…

214voto

Jonathan Kaiser Points 1746

Désactiver OPCache

MAMP active maintenant OPCache par défaut, vous pouvez le désactiver en éditant votre fichier php.ini. Assurez-vous que vous éditez le bon php.ini.

Je rencontrais moi-même le même problème. MAMP avec la version 5.5.3 de PHP utilise OPcache par défaut, mais vous ne pouvez pas le désactiver dans l'interface graphique comme vous pouvez le faire avec l'ancienne version 5.2.17 de PHP. Vous devez commenter manuellement toutes les lignes OPcache à la fin du fichier php.ini (MAMP/bin/php/[version]/conf/php.ini) et vous assurer d'arrêter et de démarrer les serveurs pour que les changements prennent effet.

J'ai mis à jour l'URI, les changements peuvent être reflétés en changeant également /conf/ sous le dossier php, mais il semble que MAMP ignorera ces changements après le redémarrage. .

4 votes

J'ai eu le même problème et je l'ai résolu en commentant les lignes opcache. C'est un peu déroutant de devoir aller dans le fichier php.ini pour changer cela. C'est en fait assez trompeur, car il semblerait que vous ayez toutes les options de mise en cache données dans la boîte déroulante MAMP->Préférences.

20 votes

Je me demande quelle partie de leur corps les créateurs de MAMP utilisaient pour penser en ajoutant cette "fonctionnalité cool".

0 votes

Je pensais que j'avais un problème avec mon installation de ModX, mais non, votre réponse semble l'avoir réglé. Merci. En outre, j'ai également rétabli l'ancienne version. Il fonctionne maintenant beaucoup mieux.

39voto

Joeri Points 528

J'ai ajouté opcache_reset() ; dans mon PHP principal pour arrêter cette mise en cache.

En le retirant de php5.5.3/conf/php.ini n'a rien fait pour moi.

Modifier

Il s'avère qu'il y a aussi un /Applications/MAMP/bin/php/php5.5.3/conf/php.ini . C'est fonctionne si je le commente.

1 votes

Mettre un commentaire sur OPcache dans le répertoire /bin a fonctionné pour moi ! Merci pour cela !

0 votes

Commentaire sur OPcache dans le php.ini en /Applications/MAMP/bin/php/php5.5.3/conf/php.ini ne fait rien, mais ajouter opcache_reset(); à index.php travaillé.

28voto

Lagi Points 211

1) dans /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) définir opcache.revalidate_freq=0
3) redémarrer MAMP

2 votes

Cela semble fonctionner. J'ai préféré mettre en œuvre cette solution plutôt que de tout commenter. Mais y a-t-il une différence ?

12voto

Feanne Points 43

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

2voto

Huroman Points 31

C'était pénible de passer environ une heure à essayer de comprendre ce que cela pouvait être.

J'ai juste ajouté ceci à la fin du code et redémarré MAMP.

  opcache.revalidate_freq=0
  opcache_reset();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X