Interrompi la memorizzazione nella cache per PHP 5.5.3 in MAMP


123

MAMP installato su un nuovo Macbook con PHP 5.5.3.

Ricarica e aggiorna non fare nulla. Ancora niente. Google in giro per qualche minuto cercando di scoprire cosa non va, torna indietro e aggiorna. Funziona. Che diamine?

Sono entrato in php.ini e disabilitato tutto il nuovo OPcache e impostato il tempo predefinito della cache a 0. Aggiunte intestazioni al documento per non forzare la memorizzazione nella cache. Sempre lo stesso problema. Che diamine sta succedendo qui?

La scheda di rete mostra una richiesta HTTP 200, quindi qualsiasi nuovo HTML nel index.phpfile viene visualizzato correttamente, ma il nuovo PHP che deve essere visualizzato dal server viene ritardato e non visualizzato finché non passa un insieme di tempo predeterminato che non so come fare cambiare. Cosa sta succedendo?

L'ho controllato anche in Safari, quindi è sicuramente una cosa del server che impedisce il rendering del file.

Fatto interessante, però, se entro in MAMP e cambio la versione PHP con quella vecchia (PHP 5.2 o qualcosa del genere), il rendering verrà eseguito normalmente, senza "problemi di cache". Passa a PHP 5.5 e si blocca. Nelle preferenze di MAMP le opzioni di memorizzazione nella cache per 5.5 non esistono nemmeno e vengono disabilitate automaticamente.


4
So che questa non è una soluzione al tuo problema, ma personalmente non sono un grande fan di MAMP, in quanto, soprattutto quando l'installazione di uno stack personalizzato è così facile - Ecco una guida piuttosto rapida per installare uno stack usando homebrew: github .com / josegonzalez / homebrew-php
mewm

@mewm Non mi ero reso conto che potesse essere così facile. Saluti! L'ho usato per iniziare con nginx in poche sequenze di tasti. learnaholic.me/2012/10/10/…
willdanceforfun

Risposte:


207

Disabilita OPCache

MAMP ora attiva OPCache per impostazione predefinita, puoi disabilitarlo modificando il tuo file php.ini. Assicurati di modificare il file php.ini corretto.

Anch'io stavo incontrando lo stesso problema. MAMP con PHP versione 5.5.3 esegue OPcache per impostazione predefinita, ma non è possibile disattivarlo nella GUI come si può fare con la vecchia versione PHP 5.2.17. Devi commentare manualmente tutte le righe di OPcache alla fine del file php.ini (MAMP / bin / php / [versione] /conf/php.ini) e assicurarti di arrestare e avviare i server affinché le modifiche vengano applicate effetto.

Ho aggiornato l'URI, le modifiche possono essere riflettenti anche cambiando / conf / nella cartella php, ma sembra che MAMP le ignorerà dopo il riavvio .


4
Ho avuto lo stesso problema e l'ho risolto commentando le righe opcache. È un po 'sconcertante che devi andare nel file php.ini per cambiarlo. In realtà è abbastanza fuorviante, dal momento che sembrerebbe che tu abbia tutte le opzioni di memorizzazione nella cache fornite nella casella a discesa MAMP-> Preferenze.
JaredH

17
Mi chiedo quale parte del loro corpo i creatori di MAMP stessero usando per pensare mentre aggiungevano questa "caratteristica interessante".
Sergii

Pensavo di avere qualcosa che non andava con la mia installazione ModX, ma no, la tua risposta sembra averlo risolto. Grazie. Oltre a ciò, sono anche tornato alla versione precedente. Ora funziona molto meglio.
vr_driver

67
Nota che il php.inifile che vuoi modificare è in / bin, non in / conf. Il mio percorso completo era /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Husky

Ho inviato una segnalazione di bug, si spera che la disabiliteranno per impostazione predefinita in una versione futura: bugs.mamp.info/view.php?id=4296
Husky

38

Ho aggiunto opcache_reset (); nel mio PHP principale per interrompere questa memorizzazione nella cache.

Rimuoverlo da php5.5.3/conf/php.ininon ha fatto nulla per me.

modificare

Si scopre che c'è anche un file /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Funziona se commento là fuori.


1
Commentare OPcache nella directory / bin ha funzionato per me! Grazie per quello!
daveaspinall

Commentare OPcache in php.ini in /Applications/MAMP/bin/php/php5.5.3/conf/php.ininon fa nulla, ma l'aggiunta opcache_reset();a ha index.phpfunzionato.
Даниил Пронин

26

1) in /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) imposta opcache.revalidate_freq = 0
3) riavvia MAMP


2
Sembra funzionare. Mi è piaciuto implementare questa soluzione meglio che commentare tutto. Ma c'è differenza?
Ketri

10

Mi ci è voluto così tanto tempo per capire che era un problema MAMP! Perché OPcache dovrebbe essere abilitato per impostazione predefinita e richiedere l'armonizzazione di php.ini per disabilitarlo in un'app che dovrebbe essere utilizzata per testare i siti web? Ad ogni modo, ho letto tutto questo thread e ho provato le varie soluzioni.

Ecco le mie note su come funziona ogni soluzione e considerazioni per la selezione di una soluzione.

Ogni soluzione funziona da sola; nessuna necessità di ridondanza.


Soluzione codice pagina web

opcache_reset ();

<?php opcache_reset(); ?>
  • Deve essere aggiunto nel codice della pagina web.
  • Forza il ricaricamento di tutti gli script.
  • Funziona senza riavviare il server MAMP.

Soluzioni di configurazione del server

Importante: utilizza il php.inifile in /Applications/MAMP/bin/php/php5.5.3/conf/php.inie non in /Applications/MAMP/conf/php5.5.3/php.ini. Regola di conseguenza se stai utilizzando una versione diversa di 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
  • Deve essere aggiunto [OPcache]in php.ini.
  • Disabilita OPcache.
  • Richiede il riavvio del server 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
  • Modifica opcache.revalidate_freqsotto [OPcache]in php.ini.
  • Fa in modo che OPcache controlli gli aggiornamenti ogni 0 secondi invece che ogni 60 secondi.
  • Richiede il riavvio del server MAMP.

Commentare [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
  • Commenta l'intera [OPcache]sezione in php.ini.
  • Rimuove OPcache dal server PHP.
  • Richiede il riavvio del server MAMP.

considerazioni

Scegli la soluzione per il codice della pagina web se:

  • Hai solo bisogno di forzare l'aggiornamento dello script per un particolare progetto
  • Non vuoi riavviare il server MAMP
  • Non vuoi modificare php.ini

Scegli una soluzione di configurazione del server se:

  • Vuoi disabilitare la cache per impostazione predefinita invece di doverlo fare in ogni progetto
  • Sei a tuo agio con la modifica di php.ini

Personalmente preferisco enable=0poiché è la soluzione più semplice per me e ho bisogno di disabilitare la cache per impostazione predefinita.


Riferimenti


4

MAMP 3.0.7.2 per OS X

Sembra che questa sia finalmente un'opzione GUI. MAMP 3.0.7.2 for Mac OS X.


Apparentemente questo non disabilita OPCache. Il mio era ancora attivo anche con questa impostazione "off".
auco

2

È stato doloroso passare circa 1 ora cercando di capire cosa poteva essere.

L'ho appena aggiunto alla fine del codice e riavviato MAMP.

  opcache.revalidate_freq=0
  opcache_reset();

2

Modifica "/Applications/MAMP/conf/php5.5.3/php.ini", cerca [OPcache] e aggiungi questo codice direttamente sotto di esso:

opcache.enable=0

Questo disabiliterà l'opcache in quando si usa PHP nel server MAMP.


Ha funzionato per il mio server Ubuntu. Grazie.
Sinan Eldem

2

Oh uomo sono contento di aver trovato questo thread! Mi stavo strappando i capelli! Ho appena aggiornato MAMP ieri e non ho notato questo problema di cache fino ad oggi mentre lavoravo a un progetto. Pensavo di star impazzendo. Ho appena cambiato "/Applications/MAMP/conf/php5.5.3/php.ini" in fondo al file opcache.enable = 0


1

Questo è anche presente nella versione Windows di MAMP.

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

È elencato in fondo al file.

L'altro problema che ho riscontrato era su un QNAP NAS TS-431. Anche questa memorizzazione nella cache è abilitata e se stai lavorando con file che cambiano dinamicamente o provi a svilupparli, ti strapperai i capelli. Come per gli altri commenti, commentalo. L'impostazione si trova in:

Pannello di controllo / Applicazioni / Web Server / Manutenzione PHP.ini.

Ancora una volta, troverai le impostazioni in fondo al file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.