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

123

MAMP installé sur un nouveau Macbook avec PHP 5.5.3.

Recharger et actualiser ne fait rien. Toujours rien. Google autour pendant quelques minutes pour essayer de découvrir ce qui ne va pas, revenez et rafraîchissez-vous. Ça marche. Que diable?

Je suis allé dans php.ini et j'ai désactivé tous les nouveaux OPcache et mis le temps de cache par défaut à 0. Ajout d'en-têtes au document pour ne forcer aucune mise en 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, donc tout nouveau HTML dans le index.phpfichier rend bien, mais le nouveau PHP qui doit être rendu par le serveur est retardé et n'est pas rendu jusqu'à ce qu'un ensemble de temps prédéterminé passe que je ne sais pas comment changer. Que se passe-t-il?

J'ai également vérifié cela dans Safari, donc c'est définitivement un 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), le rendu sera normal, sans "problèmes de mise en cache". Passez à PHP 5.5 et il raccroche. 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.

Daron Spence
la source
4
Je sais que ce n'est pas une solution à votre problème, mais je ne suis personnellement pas un grand fan de MAMP, car, surtout pas lors de l'installation d'une pile personnalisée, c'est si facile - Voici un guide assez rapide pour installer une pile en utilisant homebrew: github .com / josegonzalez / homebrew-php
mewm
@mewm Je ne savais pas que ça pouvait être si facile. À votre santé! Utilisé cela pour démarrer avec nginx en quelques frappes. learnaholic.me/2012/10/10/…
willdanceforfun

Réponses:

207

Désactiver OPCache

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

J'étais moi-même confronté au même problème. MAMP avec PHP version 5.5.3 exécute 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 assurez-vous d'arrêter et de démarrer les serveurs pour que les modifications prennent effet.

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

Jonathan Kaiser
la source
4
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 que vous deviez 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 liste déroulante MAMP-> Préférences.
JaredH
17
Je me demande quelle partie de leur corps les créateurs de MAMP utilisaient pour réfléchir en ajoutant cette "fonctionnalité sympa".
Sergii
Je pensais que j'avais un problème avec mon installation ModX, mais non, votre réponse semble l'avoir corrigé. Merci. Suite à cela, je suis également revenu à l'ancienne version. Il fonctionne maintenant beaucoup mieux.
vr_driver
67
Notez que le php.inifichier que vous souhaitez modifier se trouve dans / bin, pas dans / conf. Mon chemin complet était /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Husky
J'ai soumis un rapport de bogue, j'espère qu'ils le désactiveront par défaut dans une prochaine version: bugs.mamp.info/view.php?id=4296
Husky
38

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

Le retirer php5.5.3/conf/php.inin'a rien fait pour moi.

Éditer

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

Joeri
la source
1
Commenter OPcache dans le répertoire / bin a fonctionné pour moi! Merci pour ça!
daveaspinall
Commenter OPcache dans php.ini dans /Applications/MAMP/bin/php/php5.5.3/conf/php.inine fait rien, mais ajouter opcache_reset();à index.phptravaillé.
Даниил Пронин
26

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

Lagi
la source
2
Cela semble fonctionner. J'ai mieux aimé mettre en œuvre cette solution que de tout commenter. Mais y a-t-il une différence?
Ketri
10

Il m'a fallu si longtemps pour comprendre que c'était un problème MAMP! Pourquoi OPcache serait-il activé par défaut - et nécessiterait la désactivation 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 j'ai essayé les différentes solutions.

Voici mes notes sur le fonctionnement de chaque solution et les considérations 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 tous les scripts à être rechargés.
  • Fonctionne sans redémarrer le serveur MAMP.

Solutions de configuration de serveur

Important: utilisez le php.inifichier dans /Applications/MAMP/bin/php/php5.5.3/conf/php.iniet 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 un 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
  • Modifiez opcache.revalidate_freqsous [OPcache]dans php.ini.
  • Permet à OPcache de vérifier les mises à jour toutes les 0 secondes au lieu de toutes les 60 secondes.
  • Nécessite un 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
  • Mettez en commentaire toute la [OPcache]section dans php.ini.
  • Supprime OPcache du serveur PHP.
  • Nécessite un redémarrage du serveur MAMP.

Considérations

Choisissez la solution de code de page Web si:

  • Il vous suffit de forcer l'actualisation du script pour un projet particulier
  • Vous ne souhaitez pas redémarrer le serveur MAMP
  • Vous ne voulez pas modifier php.ini

Choisissez une solution de configuration de serveur si:

  • Vous souhaitez 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=0car c'est la solution la plus simple pour moi et j'ai besoin de la mise en cache désactivée par défaut.


Références

Feanne
la source
4

MAMP 3.0.7.2 pour OS X

On dirait que c'est finalement une option GUI. MAMP 3.0.7.2 for Mac OS X.

jibiel
la source
Cela ne désactive apparemment pas OPCache. Le mien était toujours actif même avec ce paramètre "off".
auco
2

C'était douloureux de passer environ 1 heure à essayer de comprendre ce que cela pouvait être.

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

  opcache.revalidate_freq=0
  opcache_reset();
Huroman
la source
2

Editez "/Applications/MAMP/conf/php5.5.3/php.ini", recherchez [OPcache] et ajoutez ce code directement en dessous:

opcache.enable=0

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

aakatheeri
la source
A travaillé pour mon serveur ubuntu. Merci.
Sinan Eldem
2

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

aux Etats-Unis
la source
1

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

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

Il est répertorié tout en bas du fichier.

L'autre problème que j'ai trouvé, était sur un NAS TS-431 QNAP. Cette mise en cache est également activée, et si vous travaillez avec des fichiers qui changent dynamiquement ou essayez de développer dessus, vous vous arracherez les cheveux. Comme pour les autres commentaires, commentez-le simplement. Le cadre est situé dans:

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

Une fois de plus, vous trouverez les paramètres au bas du fichier.

vr_driver
la source