Pare o cache do PHP 5.5.3 no MAMP


123

MAMP instalado em um novo Macbook com PHP 5.5.3.

Recarregar e atualizar não fazem nada. Nada ainda. Pesquise no Google por alguns minutos tentando descobrir o que está errado, volte e atualize. Funciona. Que diabos?

Entrei no php.ini e desabilitei todo o novo OPcache e defina o tempo de cache padrão como 0. Adicionados cabeçalhos ao documento para forçar o cache. Ainda o mesmo problema. O que diabos está acontecendo aqui?

A guia rede está mostrando uma solicitação HTTP 200, portanto, qualquer novo HTML no index.php arquivo é processado, mas o novo PHP que precisa ser renderizado pelo servidor é atrasado e não renderizado até que passe um tempo predeterminado que eu não sei como mudar. O que está acontecendo?

Também verifiquei isso no Safari, por isso é definitivamente uma coisa de servidor que está impedindo a renderização do arquivo.

Fato interessante, porém, se eu entrar no MAMP e alterar a versão do PHP para a antiga (PHP 5.2 ou algo semelhante), ela será renderizada normalmente, sem "problemas de cache". Mude para o PHP 5.5 e ele desliga. Nas preferências do MAMP, as opções de cache do 5.5 nem existem e são desativadas automaticamente.


4
Eu sei que isso não é uma solução para o seu problema, mas eu pessoalmente não sou um grande fã do MAMP, pois, especialmente não é fácil instalar uma pilha personalizada - Aqui está um guia rápido para instalar uma pilha usando o homebrew: github .com / josegonzalez / homebrew-php
— mewm

@mewm Eu não sabia que poderia ser tão fácil. Felicidades! Use isso para iniciar o nginx com apenas algumas teclas. learnaholic.me/2012/10/10/...
— willdanceforfun

Respostas:


207

Desativar OPCache

O MAMP agora liga o OPCache por padrão. Você pode desativá-lo editando o arquivo php.ini. Certifique-se de editar o php.ini correto.

Eu mesmo estava enfrentando o mesmo problema. O MAMP com PHP versão 5.5.3 executa o OPcache por padrão, mas você não pode desativá-lo na GUI como na versão 5.2.17 do PHP. Você deve comentar manualmente todas as linhas do OPcache no final do arquivo php.ini (MAMP / bin / php / [versão] /conf/php.ini) e certifique-se de parar e iniciar os servidores para que as alterações sejam executadas efeito.

Eu atualizei o URI, as alterações podem refletir também alterando / conf / na pasta php, mas parece que o MAMP os ignorará após a reinicialização .


4
Eu tive o mesmo problema e o corrigi comentando as linhas do opcache. É meio confuso que você tenha que entrar no arquivo php.ini para mudar isso. Na verdade, é bastante enganador, pois parece que você tem todas as opções de cache fornecidas na caixa suspensa MAMP-> Preferences.
— JaredH

17
Gostaria de saber qual parte do corpo os criadores do MAMP estavam usando para pensar enquanto adicionavam esse "recurso interessante".
— Sergii 23/10

Eu pensei que tinha algo errado com a minha instalação do ModX, mas não, sua resposta parece ter corrigido. Obrigado. Além disso, eu também voltei para a versão mais antiga. Agora funciona muito melhor.
— vr_driver

67
Observe que o php.iniarquivo que você deseja editar está em / bin, não em / conf. Meu caminho completo foi /Applications/MAMP/bin/php/php5.5.3/conf/php.ini.
— Husky

Eu enviei um relatório de erros, espero que eles vão desativá-lo por padrão em uma versão futura: bugs.mamp.info/view.php?id=4296
— Husky

38

Eu adicionei opcache_reset (); no meu PHP principal para interromper esse cache.

Removê-lo php5.5.3/conf/php.ininão fez nada para mim.

Editar

Acontece que também há um /Applications/MAMP/bin/php/php5.5.3/conf/php.ini. Funciona se eu comentar por aí.


1
Comentar o OPcache no diretório / bin funcionou para mim! Obrigado por isso!
— precisa saber é o seguinte

Comentando OPcache em no php.ini /Applications/MAMP/bin/php/php5.5.3/conf/php.ininão faz nada, mas acrescentando opcache_reset();que index.phptrabalhou.
— Даниил Пронин

26

1) em /Applications/MAMP/bin/php/php5.5.3/conf/php.ini
2) configure opcache.revalidate_freq = 0
3) reinicie o MAMP


2
Isso parece funcionar. Eu gostei de implementar esta solução melhor do que comentar tudo. Mas existe alguma diferença?
— Ketri

10

Demorei tanto para descobrir que era um problema do MAMP! Por que o OPcache seria ativado por padrão - e requer que o php.ini seja desativado - em um aplicativo que deveria ser usado para testar sites? Enfim, li todo esse tópico e tentei as várias soluções.

Aqui estão minhas anotações sobre como cada solução funciona e considerações para selecionar uma solução.

Cada solução funciona por conta própria; não há necessidade de redundância.


Solução de código de página da web

opcache_reset ();

<?php opcache_reset(); ?>
  • Deve ser adicionado ao código da página da web.
  • Força todos os scripts a serem recarregados.
  • Funciona sem reiniciar o servidor MAMP.

Soluções de configuração de servidor

Importante: Use o php.iniarquivo /Applications/MAMP/bin/php/php5.5.3/conf/php.inie não dentro /Applications/MAMP/conf/php5.5.3/php.ini. Ajuste de acordo se você estiver usando uma versão diferente do 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 ser adicionado [OPcache]em php.ini.
  • Desativa o OPcache.
  • Requer reinicialização do 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
  • Modifique opcache.revalidate_freqem [OPcache]in php.ini.
  • Faz com que o OPcache verifique se há atualizações a cada 0 segundos em vez de a cada 60 segundos.
  • Requer reinicialização do 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 a [OPcache]seção inteira em php.ini.
  • Remove o OPcache do servidor PHP.
  • Requer reinicialização do servidor MAMP.

Considerações

Escolha a solução de código da página da Web se:

  • Você só precisa forçar a atualização de script para um projeto específico
  • Você não deseja reiniciar o servidor MAMP
  • Você não deseja editar o php.ini

Escolha uma solução de configuração do servidor se:

  • Você deseja desativar o cache por padrão, em vez de precisar fazê-lo em todos os projetos
  • Você está confortável com a edição do php.ini

Pessoalmente, prefiro, enable=0pois é a solução mais simples para mim e preciso usar o cache desativado por padrão.


Referências


4

MAMP 3.0.7.2 para OS X

Parece que esta é finalmente uma opção da GUI. MAMP 3.0.7.2 for Mac OS X.


Isso não desativa o OPCache aparentemente. O meu ainda estava ativo, mesmo com essa configuração "desativada".
— Auco

2

Foi doloroso passar cerca de 1 hora tentando descobrir o que poderia ser.

Acabei de adicionar isso no final do código e reiniciar o MAMP.

  opcache.revalidate_freq=0
  opcache_reset();

2

Edite "/Applications/MAMP/conf/php5.5.3/php.ini" e procure por [OPcache] e adicione este código diretamente:

opcache.enable=0

Isso desativará o opcache ao usar o PHP no servidor MAMP.


Trabalhei para o meu servidor ubuntu. Obrigado.
— Sinan Eldem

2

Oh cara, estou feliz por ter encontrado este tópico! Eu estava puxando meu cabelo! Acabei de atualizar o MAMP ontem e não percebi esse problema de armazenamento em cache até hoje enquanto trabalhava em um projeto. Pensei que estava perdendo a cabeça. Acabei de alterar "/Applications/MAMP/conf/php5.5.3/php.ini" na parte inferior do arquivo opcache.enable = 0


1

Isso também é atual na versão do MAMP para Windows.

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

Está listado na parte inferior do arquivo.

O outro problema que encontrei foi em um QNAP NAS TS-431. Esse cache também está ativado e, se você estiver trabalhando com arquivos que mudam dinamicamente ou tenta desenvolvê-lo, estará arrancando os cabelos. De acordo com os outros comentários, basta comentar. A configuração está localizada em:

Painel de Controle / Aplicativos / Servidor Web / Manutenção PHP.ini.

Mais uma vez, você encontrará as configurações na parte inferior do arquivo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.