Beenden Sie das Caching für PHP 5.5.3 in MAMP

123

Installierte MAMP auf einem neuen Macbook mit PHP 5.5.3.

Neu laden und aktualisieren nichts tun. Immer noch nichts. Google versucht ein paar Minuten lang herauszufinden, was nicht stimmt, kommt zurück und aktualisiert. Es klappt. Was zum Teufel?

Ich ging in die php.ini und deaktivierte den gesamten neuen OPcache und setzte die Standard-Cache-Zeit auf 0. Dem Dokument wurden Header hinzugefügt, um kein Caching zu erzwingen. Immer noch das gleiche Problem. Was zum Teufel ist hier los?

Auf der Registerkarte "Netzwerk" wird eine HTTP 200-Anforderung angezeigt, sodass jeder neue HTML-Code in der index.phpDatei einwandfrei wiedergegeben wird. Neues PHP, das vom Server gerendert werden muss, wird jedoch verzögert und erst wiedergegeben, wenn eine bestimmte Zeitspanne verstrichen ist, die ich nicht kenne wechseln. Was ist los?

Ich habe dies auch in Safari überprüft, so dass es definitiv eine Serversache ist, die das Rendern der Datei verhindert.

Interessante Tatsache, wenn ich in MAMP gehe und die PHP-Version auf die alte (PHP 5.2 oder so) ändere, wird sie normal gerendert, ohne "Caching-Probleme". Wechseln Sie zu PHP 5.5 und es legt auf. In den MAMP-Einstellungen sind die Caching-Optionen für 5.5 nicht einmal vorhanden und werden automatisch deaktiviert.

Daron Spence
quelle
4
Ich weiß, dass dies keine Lösung für Ihr Problem ist, aber ich persönlich bin kein großer Fan von MAMP, da insbesondere die Installation eines benutzerdefinierten Stacks nicht so einfach ist. Hier ist eine ziemlich schnelle Anleitung zum Installieren eines Stacks mit Homebrew: Github .com / josegonzalez / homebrew-php
mewm
@mewm Ich wusste nicht, dass es so einfach sein kann. Prost! Verwendet dies, um mit Nginx in nur wenigen Tastenanschlägen loszulegen. learnaholic.me/2012/10/10/…
willdanceforfun

Antworten:

207

Deaktivieren Sie OPCache

MAMP aktiviert jetzt standardmäßig OPCache. Sie können es deaktivieren, indem Sie Ihre Datei php.ini bearbeiten. Stellen Sie sicher, dass Sie die richtige php.ini bearbeiten.

Ich hatte selbst das gleiche Problem. MAMP mit PHP Version 5.5.3 führt standardmäßig OPcache aus, aber Sie können es nicht wie mit der älteren PHP Version 5.2.17 in der GUI deaktivieren. Sie müssen alle OPcache-Zeilen am Ende der Datei php.ini (MAMP / bin / php / [version] /conf/php.ini) manuell auskommentieren und sicherstellen, dass die Server gestoppt und gestartet werden, damit die Änderungen vorgenommen werden können bewirken.

Ich habe den URI aktualisiert. Die Änderungen können reflektierend sein, indem Sie auch / conf / unter dem PHP-Ordner ändern, aber es scheint, dass MAMP diese nach dem Neustart ignoriert .

Jonathan Kaiser
quelle
4
Ich hatte das gleiche Problem und habe es behoben, indem ich die Opcache-Zeilen auskommentiert habe. Es ist ein Rätsel, dass Sie in die Datei php.ini gehen müssen, um dies zu ändern. Es ist eigentlich ziemlich irreführend, da es so aussieht, als hätten Sie alle Caching-Optionen im Dropdown-Feld MAMP-> Einstellungen.
JaredH
17
Ich frage mich, welchen Teil ihres Körpers MAMP-Schöpfer beim Hinzufügen dieser "coolen Funktion" zum Nachdenken verwendet haben.
Sergii
Ich dachte, ich hätte etwas mit meiner ModX-Installation falsch gemacht, aber nein, Ihre Antwort scheint es behoben zu haben. Vielen Dank. Darüber hinaus habe ich auch auf die ältere Version zurückgegriffen. Es läuft jetzt viel besser.
vr_driver
67
Beachten Sie, dass sich die php.inizu bearbeitende Datei in / bin und nicht in / conf befindet. Mein voller Weg war /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Husky
Ich habe einen Fehlerbericht eingereicht, der hoffentlich in einer zukünftigen Version standardmäßig deaktiviert wird: bugs.mamp.info/view.php?id=4296
Husky
38

Ich habe opcache_reset () hinzugefügt . in meinem Haupt-PHP, um dieses Caching zu stoppen.

Das Entfernen von php5.5.3/conf/php.inihat nichts für mich getan.

Bearbeiten

Es stellt sich heraus, dass es auch eine gibt /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Es funktioniert, wenn ich es da draußen kommentiere.

Joeri
quelle
1
Das Auskommentieren von OPcache im Verzeichnis / bin hat bei mir funktioniert! Dank dafür!
Daveaspinall
Das Kommentieren von OPcache in der php.ini in /Applications/MAMP/bin/php/php5.5.3/conf/php.inimacht nichts anderes, als das Hinzufügen opcache_reset();zu index.phpfunktioniert.
4аниил Пронин
26

1) in /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) opcache.revalidate_freq = 0 setzen
3) MAMP neu starten

Lagi
quelle
2
Das scheint zu funktionieren. Ich habe es genossen, diese Lösung besser zu implementieren, als alles zu kommentieren. Aber gibt es einen Unterschied?
Ketri
10

Ich habe so lange gebraucht, um herauszufinden, dass es ein MAMP-Problem war! Warum sollte OPcache in einer App, die zum Testen von Websites verwendet werden soll, standardmäßig aktiviert sein - und zum Deaktivieren das Basteln von php.ini erfordern? Wie auch immer, ich habe diesen ganzen Thread durchgelesen und die verschiedenen Lösungen ausprobiert.

Hier sind meine Notizen zur Funktionsweise der einzelnen Lösungen und Überlegungen zur Auswahl einer Lösung.

Jede Lösung funktioniert für sich. Keine Notwendigkeit für Redundanz.


Webseiten-Code-Lösung

opcache_reset ();

<?php opcache_reset(); ?>
  • Muss im Webseitencode hinzugefügt werden.
  • Erzwingt das erneute Laden aller Skripte.
  • Funktioniert ohne Neustart des MAMP-Servers.

Serverkonfigurationslösungen

Wichtig: Verwenden Sie die php.iniDatei in /Applications/MAMP/bin/php/php5.5.3/conf/php.iniund nicht in /Applications/MAMP/conf/php5.5.3/php.ini. Passen Sie dies entsprechend an, wenn Sie eine andere Version von PHP verwenden.

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
  • Muss unter [OPcache]in hinzugefügt werden php.ini.
  • Deaktiviert OPcache.
  • Erfordert einen Neustart des MAMP-Servers.

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
  • Ändern Sie opcache.revalidate_frequnter [OPcache]in php.ini.
  • Lässt OPcache alle 0 Sekunden statt alle 60 Sekunden nach Updates suchen.
  • Erfordert einen Neustart des MAMP-Servers.

Auskommentieren [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
  • Kommentieren Sie den gesamten [OPcache]Abschnitt in php.ini.
  • Entfernt OPcache vom PHP-Server.
  • Erfordert einen Neustart des MAMP-Servers.

Überlegungen

Wählen Sie die Webseitencode-Lösung, wenn:

  • Sie müssen nur die Skriptaktualisierung für ein bestimmtes Projekt erzwingen
  • Sie möchten den MAMP-Server nicht neu starten
  • Sie möchten die php.ini nicht bearbeiten

Wählen Sie eine Serverkonfigurationslösung, wenn:

  • Sie möchten das Caching standardmäßig deaktivieren, anstatt es in jedem Projekt ausführen zu müssen
  • Sie sind mit der Bearbeitung von php.ini vertraut

Ich persönlich bevorzuge es, enable=0da es die einfachste Lösung für mich ist und das Caching standardmäßig deaktiviert ist.


Verweise

Feanne
quelle
4

MAMP 3.0.7.2 für OS X.

Es sieht so aus, als wäre dies endlich eine GUI-Option. MAMP 3.0.7.2 for Mac OS X.

Jibiel
quelle
Dies deaktiviert OPCache anscheinend nicht. Meins war auch mit dieser Einstellung "Aus" noch aktiv.
Auco
2

Es war schmerzhaft, ungefähr eine Stunde damit zu verbringen, herauszufinden, was es sein könnte.

Ich habe dies gerade am Ende des Codes hinzugefügt und MAMP neu gestartet.

  opcache.revalidate_freq=0
  opcache_reset();
Huroman
quelle
2

Bearbeiten Sie "/Applications/MAMP/conf/php5.5.3/php.ini", suchen Sie nach [OPcache] und fügen Sie diesen Code direkt hinzu:

opcache.enable=0

Dadurch wird der Opcache deaktiviert, wenn PHP auf dem MAMP-Server verwendet wird.

aakatheeri
quelle
Arbeitete für meinen Ubuntu-Server. Vielen Dank.
Sinan Eldem
2

Oh Mann, bin ich froh, dass ich diesen Thread gefunden habe! Ich zog mir die Haare aus! Ich habe gestern gerade MAMP aktualisiert und dieses Caching-Problem bis heute bei der Arbeit an einem Projekt nicht bemerkt. Ich dachte, ich würde den Verstand verlieren. Ich habe gerade "/Applications/MAMP/conf/php5.5.3/php.ini" ganz unten in der Datei opcache.enable = 0 geändert

in den USA
quelle
1

Dies ist auch in der Windows-Version von MAMP aktuell.

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

Es ist ganz unten in der Datei aufgeführt.

Das andere Problem, das ich fand, war auf einem QNAP NAS TS-431. Dieses Caching ist ebenfalls aktiviert. Wenn Sie mit sich dynamisch ändernden Dateien arbeiten oder versuchen, darauf zu entwickeln, werden Ihnen die Haare herausgerissen. Wie in den anderen Kommentaren, kommentieren Sie es einfach aus. Die Einstellung befindet sich in:

Systemsteuerung / Anwendungen / Webserver / PHP.ini-Wartung.

Die Einstellungen finden Sie erneut am Ende der Datei.

vr_driver
quelle