Como corrigir o erro de permissão ao gerar cache no WP Rocket
O que é o erro de permissão de cache do WP Rocket?
O WP Rocket gera arquivos HTML estáticos dentro de wp-content/cache/wp-rocket e arquivos de assets (CSS minificado, used-css, critical-css) em subpastas de wp-content/cache. Para isso, o usuário do processo PHP (geralmente www-data ou o usuário do PHP-FPM) precisa de permissão de escrita nessas pastas. Quando a permissão é restritiva demais, ou quando o dono dos arquivos é diferente do usuário do PHP, o WP Rocket falha silenciosamente: o plugin fica ativo, mas nenhum arquivo de cache é criado e o HTML servido continua sem o rodapé de assinatura do cache.
O mesmo acontece com a pasta wp-content/wp-rocket-config, onde o plugin grava o arquivo de configuração de cada domínio. Se ela não existir ou não for gravável, as opções salvas no painel não são aplicadas na geração do cache.
Como identificar
- A página servida não tem o comentário de rodapé no HTML que o WP Rocket adiciona quando cacheia (algo como ‘Performance optimized by WP Rocket’) ao usar ‘Ver código-fonte’ em uma aba anônima.
- A pasta wp-content/cache/wp-rocket existe mas fica vazia, ou nem chega a ser criada, mesmo após limpar e pré-carregar o cache.
- No log de erros do PHP aparece um aviso de escrita do tipo ‘failed to open stream: Permission denied’ apontando para um caminho dentro de wp-content/cache.
- O painel mostra a opção ‘wp-rocket-config’ ou a pasta de cache como não gravável quando você revisa as permissões via gerenciador de arquivos da hospedagem.
- As otimizações configuradas no painel (minificação, used-css) não aparecem no front-end, e o teste do GTmetrix ou PageSpeed continua reportando o site como não cacheado.
Como prevenir
- Mantenha wp-content e suas subpastas em 0755 e os arquivos em 0644 como padrão, evitando valores como 0777 que a documentação não recomenda.
- Garanta que todo upload de arquivos (FTP, SSH, deploy) preserve o usuário do PHP como dono de wp-content, para o WP Rocket nunca perder a escrita.
- Depois de migrar o site de servidor, revise as permissões da pasta de cache antes de reativar o WP Rocket, porque a migração costuma trocar o dono dos arquivos.
- Monitore o espaço em disco da conta: cache cheio ou disco esgotado também se manifesta como falha de permissão na hora de gravar.
Causa
- A pasta wp-content/cache está com permissão restritiva (por exemplo 0555 ou 0700) e o usuário do PHP-FPM não tem o bit de escrita, então o WP Rocket não consegue criar a subpasta wp-rocket nem gravar os arquivos HTML.
- O dono (owner) dos arquivos em wp-content é diferente do usuário que roda o PHP: a pasta foi criada via SSH como root ou via FTP com outro usuário, e o www-data não pertence ao grupo dono, ficando sem escrita efetiva mesmo com 0755.
- A pasta wp-content/wp-rocket-config não existe ou não é gravável, então o WP Rocket não grava o arquivo de configuração do domínio e as regras de cache nunca passam a valer.
- Um plugin de segurança ou uma regra de hardening da hospedagem trancou wp-content em modo somente-leitura (por exemplo via immutable bit ou disable_functions), bloqueando a criação de arquivos pelo WP Rocket.
- O open_basedir ou um espaço em disco esgotado na conta de hospedagem impede a escrita no diretório de cache, o que o PHP reporta como falha de permissão ao abrir o stream.
Como resolver
- Confirme que o WP Rocket não está gerando cache: Abra a página inicial em uma aba anônima e veja o código-fonte. Se o comentário de assinatura do WP Rocket não estiver no final do HTML, o cache não está sendo criado e a causa mais provável é permissão de escrita na pasta de cache.
- Ajuste a permissão da pasta de cache para 0755: Conecte via SSH (ou use o gerenciador de arquivos da hospedagem) e aplique CHMOD 0755 na pasta de cache, conforme a documentação do WP Rocket. Esse valor dá escrita ao dono e leitura ao restante.
chmod 0755 wp-content/cache chmod -R 0755 wp-content/cache/wp-rocket - Garanta que a pasta wp-rocket-config exista e seja gravável: O WP Rocket grava o arquivo de configuração do domínio nesta pasta. Crie-a se não existir e dê a ela a mesma permissão de escrita da pasta de cache.
mkdir -p wp-content/wp-rocket-config chmod 0755 wp-content/wp-rocket-config - Alinhe o dono dos arquivos com o usuário do PHP: Se mesmo com 0755 o cache não for criado, o problema é o dono. Defina o usuário e o grupo do PHP-FPM (no exemplo, www-data) como dono de wp-content para que a escrita seja efetiva. Confirme o usuário correto com a sua hospedagem antes de aplicar.
chown -R www-data:www-data wp-content/cache chown -R www-data:www-data wp-content/wp-rocket-config - Limpe e pré-carregue o cache: No painel do WordPress, acesse Configurações -> WP Rocket -> Painel e clique em Limpar e pré-carregar cache. Depois recarregue a página em uma aba anônima e confirme que a assinatura do WP Rocket voltou ao HTML.
# Diagnóstico: confirma dono e permissão da pasta de cache
ls -ld wp-content/cache wp-content/cache/wp-rocket wp-content/wp-rocket-config
# Descobre o usuário que roda o PHP-FPM neste servidor
ps -eo user,comm | grep -E 'php-fpm|php' | head -n 1
# Testa se o usuário do PHP consegue escrever na pasta de cache
sudo -u www-data test -w wp-content/cache && echo GRAVAVEL || echo SEM_ESCRITA














