Detener el almacenamiento en caché para PHP 5.5.3 en MAMP

123

Instalado MAMP en una nueva Macbook con PHP 5.5.3.

Recargar y actualizar no hacer nada. Aún nada. Google alrededor por unos minutos tratando de averiguar qué está mal, volver y actualizar. Funciona. ¿Que demonios?

Entré en php.ini y deshabilité todos los OPcache nuevos y configuré el tiempo de caché predeterminado en 0. Agregué encabezados al documento para no forzar el almacenamiento en caché. Sigue siendo el mismo problema. ¿Qué diablos está pasando aquí?

La pestaña de red muestra una solicitud HTTP 200, por lo que cualquier HTML nuevo en el index.phparchivo se procesa bien, pero el nuevo PHP que necesita ser procesado por el servidor se retrasa y no se procesa hasta que pasa un conjunto predeterminado de tiempo que no sé cómo cambiar. ¿Que esta pasando?

También verifiqué esto en Safari, por lo que definitivamente es una cosa del servidor que impide que el archivo se procese.

Sin embargo, un dato interesante es que si entro en MAMP y cambio la versión de PHP a la anterior (PHP 5.2 o algo así) se renderizará normalmente, sin "problemas de almacenamiento en caché". Cambie a PHP 5.5 y cuelga. En las preferencias de MAMP, las opciones de almacenamiento en caché para 5.5 ni siquiera existen y se deshabilitan automáticamente.

Daron Spence
fuente
44
Sé que esta no es una solución a su problema, pero personalmente no soy un gran admirador de MAMP, ya que, especialmente no cuando instalar una pila personalizada es tan fácil: aquí hay una guía bastante rápida para instalar una pila usando homebrew: github .com / josegonzalez / homebrew-php
mewm
@mewm No me di cuenta de que podría ser tan fácil. ¡Salud! Usé esto para comenzar a usar nginx con solo unas pocas teclas. learnaholic.me/2012/10/10/…
willdanceforfun

Respuestas:

207

Deshabilitar OPCache

MAMP ahora activa OPCache de forma predeterminada, puede deshabilitarlo editando su archivo php.ini. Asegúrese de editar el php.ini correcto.

Me encontraba con el mismo problema. MAMP con PHP versión 5.5.3 ejecuta OPcache de forma predeterminada, pero no puede desactivarlo en la GUI como puede hacerlo con la versión anterior de PHP 5.2.17. Debe comentar manualmente todas las líneas de OPcache al final del archivo php.ini (MAMP / bin / php / [versión] /conf/php.ini) y asegúrese de detener e iniciar los servidores para que se realicen los cambios. efecto.

Actualicé el URI, los cambios pueden ser reflexivos también cambiando / conf / debajo de la carpeta php, pero parece que MAMP los ignorará después de reiniciar .

Jonathan Kaiser
fuente
44
Tuve el mismo problema y lo solucioné comentando las líneas opcache. Es un poco extraño que tengas que ir al archivo php.ini para cambiar esto. En realidad, es bastante engañoso, ya que parece que tiene todas las opciones de almacenamiento en caché que figuran en el cuadro desplegable MAMP-> Preferencias.
JaredH
17
Me pregunto qué parte de su cuerpo los creadores de MAMP estaban usando para pensar al agregar esta "característica genial".
Sergii
Pensé que tenía algo mal con mi instalación ModX, pero no, su respuesta parece haberlo solucionado. Gracias. Además de eso, también volví a la versión anterior. Ahora corre mucho mejor.
vr_driver
67
Tenga en cuenta que el php.iniarchivo que desea editar está en / bin, no en / conf. Mi camino completo fue /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
Husky
He enviado un informe de error, espero que lo deshabiliten de forma predeterminada en una versión futura: bugs.mamp.info/view.php?id=4296
Husky
38

Añadí opcache_reset (); en mi PHP principal para detener este almacenamiento en caché.

Quitarlo no php5.5.3/conf/php.inihizo nada por mí.

Editar

Resulta que también hay un /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Funciona si lo comento por ahí.

Joeri
fuente
1
¡Comentar OPcache en el directorio / bin funcionó para mí! ¡Gracias por eso!
daveaspinall
Comentar OPcache en php.ini en /Applications/MAMP/bin/php/php5.5.3/conf/php.inino hace nada, pero agrega opcache_reset();a index.phptrabajado.
Даниил Пронин
26

1) en /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) establezca opcache.revalidate_freq = 0
3) reinicie MAMP

Lagi
fuente
2
Esto parece funcionar. Disfruté implementando esta solución mejor que comentarlo todo. ¿Pero hay alguna diferencia?
Ketri
10

¡Me tomó tanto tiempo descubrir que era un problema MAMP! ¿Por qué OPcache estaría habilitado de forma predeterminada, y requeriría retoques php.ini para deshabilitarlo, en una aplicación que se supone que se usará para probar sitios web? De todos modos, leí todo este hilo y probé las diversas soluciones.

Aquí están mis notas sobre cómo funciona cada solución y las consideraciones para seleccionar una solución.

Cada solución funciona por sí sola; No hay necesidad de redundancia.


Solución de código de página web

opcache_reset ();

<?php opcache_reset(); ?>
  • Debe agregarse en el código de la página web.
  • Obliga a recargar todos los scripts.
  • Funciona sin reiniciar el servidor MAMP.

Soluciones de configuración del servidor

Importante: use el php.iniarchivo en /Applications/MAMP/bin/php/php5.5.3/conf/php.iniy no en /Applications/MAMP/conf/php5.5.3/php.ini. Ajuste en consecuencia si está utilizando una versión diferente de PHP.

habilitar = 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
  • Debe agregarse debajo [OPcache]en php.ini.
  • Deshabilita OPcache.
  • Requiere reiniciar el servidor 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
  • Modificar opcache.revalidate_freqdebajo de [OPcache]en php.ini.
  • Hace que OPcache busque actualizaciones cada 0 segundos en lugar de cada 60 segundos
  • Requiere reiniciar el servidor MAMP.

Comentando [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
  • Comente toda la [OPcache]sección en php.ini.
  • Elimina OPcache del servidor PHP.
  • Requiere reiniciar el servidor MAMP.

Consideraciones

Elija la solución de código de página web si:

  • Solo necesita forzar la actualización del script para un proyecto en particular
  • No desea reiniciar el servidor MAMP
  • No quieres editar php.ini

Elija una solución de configuración del servidor si:

  • Desea deshabilitar el almacenamiento en caché de forma predeterminada en lugar de tener que hacerlo en cada proyecto
  • Te sientes cómodo editando php.ini

Personalmente prefiero enable=0ya que es la solución más simple para mí, y necesito el almacenamiento en caché deshabilitado de forma predeterminada.


Referencias

Feanne
fuente
4

MAMP 3.0.7.2 para OS X

Parece que finalmente es una opción de GUI. MAMP 3.0.7.2 for Mac OS X.

jibiel
fuente
Esto no deshabilita OPCache aparentemente. La mía seguía activa incluso con esta configuración "desactivada".
auco
2

Fue doloroso pasar alrededor de 1 hora tratando de descubrir qué podría ser.

Acabo de agregar esto al final del código y reiniciar MAMP.

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

Edite "/Applications/MAMP/conf/php5.5.3/php.ini", busque [OPcache] y agregue este código directamente debajo:

opcache.enable=0

Esto deshabilitará opcache cuando use PHP en el servidor MAMP.

aakatheeri
fuente
Trabajó para mi servidor ubuntu. Gracias.
Sinan Eldem
2

¡Oh hombre, me alegro de haber encontrado este hilo! ¡Me estaba arrancando el pelo! Acabo de actualizar MAMP ayer y no noté este problema de almacenamiento en caché hasta hoy mientras trabajaba en un proyecto. Pensé que me estaba volviendo loco. Acabo de cambiar "/Applications/MAMP/conf/php5.5.3/php.ini" al final del archivo opcache.enable = 0

en los EE.UU
fuente
1

Esto también es actual en la versión de Windows de MAMP también.

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

Está en la lista al final del archivo.

El otro problema que encontré fue en un QNAP NAS TS-431. Este almacenamiento en caché también está habilitado, y si estás trabajando con archivos que cambian dinámicamente, o intentas desarrollarlos, te arrancarás el pelo. Según los otros comentarios, solo coméntelo. La configuración se encuentra en:

Panel de control / Aplicaciones / Servidor web / Mantenimiento PHP.ini.

Una vez más, encontrará la configuración en la parte inferior del archivo.

vr_driver
fuente