web-dev-qa-db-fra.com

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

Installé MAMP sur un nouveau Macbook avec PHP 5.5.3.

Recharger et rafraîchir ne font rien. Toujours rien. Google autour pendant quelques minutes essayant de découvrir ce qui ne va pas, revenez et actualisez. Ça marche. Que diable?

Je suis allé dans php.ini, j'ai désactivé tout le nouvel OPcache et mis le temps de cache par défaut à 0. Des en-têtes supplémentaires ont été ajoutés au document pour ne pas forcer le cache. Toujours le même problème. Mais qu'est ce qu'il se passe ici?

L'onglet réseau affiche une requête HTTP 200, ainsi tout nouveau code HTML dans le fichier index.php Le fichier restitue correctement, mais le nouveau PHP qui doit être restitué par le serveur est retardé et non restitué jusqu'à ce qu'un laps de temps prédéterminé s'écoule que je ne sais pas comment changer. sur?

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

Fait intéressant cependant, si je passe dans MAMP et que je change la version PHP) à l'ancienne (PHP 5.2 ou quelque chose du genre), le rendu sera normal, sans "problèmes de mise en cache". Basculez vers PHP 5.5 et il se bloque. Dans les préférences MAMP, les options de mise en cache pour 5.5 n'existent même pas et sont automatiquement désactivées.

123
Daron Spence

Désactiver OPCache

MAMP active désormais OPCache par défaut, vous pouvez le désactiver en modifiant votre fichier php.ini. Assurez-vous que vous modifiez le php.ini correct.

Je rencontrais le même problème moi-même. MAMP avec PHP la version 5.5.3 exécute OPcache par défaut, mais vous ne pouvez pas le désactiver dans l'interface graphique comme vous le pouvez avec l'ancien PHP version 5.2 .17 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 redémarrer les serveurs du les changements prennent effet.

J'ai mis à jour l'URI, les modifications peuvent être réfléchissantes en modifiant également/conf/dans le dossier php, mais il semble que MAMP les ignore après le redémarrage .

206
Jonathan Kaiser

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.

Éditer

Il s'avère qu'il y a aussi un /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Cela fonctionne si je commente là-bas.

39
Joeri

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

26
Lagi

Il m'a fallu si longtemps pour comprendre que c'était un problème de MAMP! Pourquoi OPcache serait-il activé par défaut - et aurait-il besoin d'un bricolage de php.ini - dans une application censée être utilisée pour tester des sites Web? Quoi qu'il en soit, j'ai lu tout ce fil et essayé les différentes solutions.

Voici mes notes sur le fonctionnement de chaque solution et les considérations à prendre en compte pour la sélection d'une solution.

Chaque solution fonctionne de manière autonome. pas besoin de redondance.


Solution de code de page Web

opcache_reset ();

<?php opcache_reset(); ?>
  • Doit être ajouté dans le code de la page Web.
  • Force le rechargement de tous les scripts.
  • Fonctionne sans redémarrer le serveur MAMP.

Solutions de configuration du serveur

Important: Utilisez le php.ini fichier dans /Applications/MAMP/bin/php/php5.5.3/conf/php.ini et non dans /Applications/MAMP/conf/php5.5.3/php.ini. Ajustez 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] dans 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] dans php.ini.
  • Permet à OPcache de rechercher des mises à jour toutes les 0 secondes au lieu de toutes les 60 secondes.
  • Nécessite le redémarrage du serveur MAMP.

Commenter [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 [OPcache] section dans php.ini.
  • Supprime OPcache du serveur PHP.
  • Nécessite le redémarrage du serveur MAMP.

Considérations

Choisissez la solution de code de page Web si:

  • Vous avez juste besoin de forcer l'actualisation du script pour un projet particulier
  • Vous ne voulez pas redémarrer le serveur MAMP
  • Vous ne voulez pas éditer php.ini

Choisissez une solution de configuration de serveur si:

  • Vous voulez désactiver la mise en cache par défaut au lieu d'avoir à le faire dans chaque projet
  • Vous êtes à l'aise avec l'édition de php.ini

Personnellement, je préfère enable=0 puisque c'est la solution la plus simple pour moi et que la mise en cache est désactivée par défaut.


Références

10
Feanne

MAMP 3.0.7.2 for OS X

Il semble que ce soit finalement une option graphique. MAMP 3.0.7.2 for Mac OS X.

4
jibiel

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

Je viens d'ajouter ceci à la fin du code et de redémarrer MAMP.

  opcache.revalidate_freq=0
  opcache_reset();
3
Huroman

Oh mec, je suis content d'avoir trouvé ce fil! Je tirais mes cheveux! Je viens de mettre à niveau MAMP hier et je n'ai pas remarqué ce problème de mise en cache jusqu'à aujourd'hui alors que je travaillais sur un projet. Je pensais que je perdais la raison. Je viens de changer "/ Applications/MAMP/conf/php5.5.3/php.ini" tout en bas du fichier opcache.enable = 0

2
intheusa

Éditez "/Applications/MAMP/conf/php5.5.3/php.ini", recherchez [OPcache] et ajoutez ce code directement sous celui-ci:

opcache.enable=0

Ceci désactivera opcache lors de l'utilisation PHP sur le serveur MAMP.

2
aakatheeri

Ceci est également courant dans la version Windows de MAMP.

C:\MAMP\conf\php5.6.3\php.ini

Il est répertorié au bas du fichier.

L’autre problème que j’ai rencontré concerne un QNAP NAS TS-431. Cette mise en cache est également activée. Si vous travaillez avec des fichiers à modification dynamique, ou essayez de les développer, vous allez déchirer vos cheveux. Selon les autres commentaires, il suffit de commenter. Le paramètre est situé dans:

Panneau de configuration/Applications/Serveur Web/Maintenance PHP.ini.

Encore une fois, vous trouverez les paramètres au bas du fichier.

1
vr_driver