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.

Daron Spence
fonte
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 .

Jonathan Kaiser
fonte
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í.

Joeri
fonte
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

Lagi
fonte
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

Feanne
fonte
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.

jibiel
fonte
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();
Huroman
fonte
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.

aakatheeri
fonte
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

nos Estados Unidos
fonte
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.

vr_driver
fonte