Corrigir o erro “Limite de memória PHP abaixo do valor recomendado” no ownCloud 10

O resultado desejado não é simplesmente "o aviso desapareceu". Uma correção adequada significa que o processo PHP que realmente executa o ownCloud 10 reporta um limite de memória de pelo menos 512 MB, o aviso do administrador do ownCloud desaparece, as tarefas agendadas ou da linha de comando também usam um limite apropriado e o host ainda tem memória física suficiente para executar o PHP, o servidor web, o banco de dados e as tarefas em segundo plano sem uso excessivo de memória virtual.

Para o ownCloud Classic 10.16, o ambiente Docker oficial usa OWNCLOUD_MEMORY_LIMIT=512Mcomo padrão recomendado. A documentação do ownCloud também distingue a configuração PHP usada pelo servidor web daquela usada pelo php-cli. Essa distinção é o principal motivo pelo qual os administradores às vezes alteram o memory_limit, reiniciam um serviço e ainda veem o mesmo aviso.

Este guia começa com as verificações menos disruptivas e, em seguida, mostra os caminhos do Apache, PHP-FPM, CLI e Docker. Também explica quando aumentar ainda mais o limite é justificado e quando o problema real é a insuficiência de RAM do host, e não a configuração do PHP em si.

Como é o sucesso?

VerificarBom resultadoSe falhar
Visão geral do administrador do ownCloudSem aviso de “Limite de memória PHP abaixo do valor recomendado”Você provavelmente editou a configuração PHP errada ou não reiniciou o serviço correto.
Tempo de execução PHP da Webmemory_limitmostra 512M ou superiorLocalize o arquivo de configuração carregado usado pela solicitação web.
CLI / tempo de execução cronphp -r 'echo ini_get("memory_limit");'mostra o valor pretendidophp.iniEdite também as configurações específicas da CLI .
Memória do hostRAM disponível suficiente; pouca ou nenhuma pressão de troca sustentada.Não aumente os limites do PHP indiscriminadamente. Reavalie a quantidade de processos do PHP ou o tamanho do host.
RegistrosSem erros recorrentes de "Memória permitida esgotada".Identifique a carga de trabalho que está consumindo muita memória antes de aumentar o limite novamente.

1. Confirme o aviso e o valor que o ownCloud detecta.

Visão geral do administrador do ownCloud 10 mostrando um aviso de que o limite de memória PHP está abaixo do valor recomendado e um limite de 128 MB.
Comece pelo valor visível para o próprio ownCloud. Um limite de tempo de execução web de 128 MB ou 256 MB está abaixo do valor de 512 MB usado pela configuração Docker recomendada pelo ownCloud.

Abra as configurações de administração do ownCloud e observe o aviso de limite de memória. Antes de alterar qualquer coisa, anote a versão do ownCloud, a versão do PHP, o tipo de servidor web e o limite de memória atual. Isso lhe dará uma base de comparação e ajudará a evitar alterações na instalação incorreta do PHP em sistemas com várias versões do PHP.

A documentação atual do ownCloud 10.16 afirma que os requisitos do servidor dependem muito da quantidade de usuários, arquivos e da atividade. A configuração do Docker define OWNCLOUD_MEMORY_LIMIT=512Me recomenda manter esse padrão. Isso faz com que 512 MB seja uma base razoável para resolver o aviso, mas não uma garantia de que todas as cargas de trabalho caberão em 512 MB.

Referências oficiais: recomendações de implantação do ownCloud e variáveis ​​de ambiente Docker do ownCloud .

2. Não confie no valor da CLI para representar o servidor web.

Terminal do Ubuntu mostrando php -i e php --ini com um limite de memória de linha de comando de 128 MB e o caminho do arquivo php.ini na linha de comando.
php --iniEste relatório exibe a configuração da CLI do PHP. Essa configuração pode ser diferente da configuração do PHP usada pelo Apache ou PHP-FPM para servir o ownCloud.

Execute estes comandos para ver o que o processo PHP da linha de comando utiliza:

php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'

Isso é útil para occtarefas agendadas (cron jobs), mas não comprova o que a requisição web utiliza. O ownCloud documenta explicitamente caminhos de configuração separados, como:

/etc/php/<version>/apache2/php.ini
/etc/php/<version>/fpm/php.ini
/etc/php/<version>/cli/php.ini

Se o seu terminal indicar 512M enquanto a página de administração ainda apresentar um erro, essa discrepância é um forte indício de que o servidor web está carregando um valor diferente php.ini.

Consulte as notas de configuração do PHP do ownCloud , que alertam especificamente que as configurações do PHP podem precisar ser alteradas em mais de um arquivo INI.

3. Encontre a configuração PHP usada pela requisição web.

Página phpinfo do navegador mostrando o arquivo de configuração PHP-FPM carregado e um limite de memória de 128M ao lado de um terminal exibindo a configuração da linha de comando.
Compare o ambiente de execução PHP do navegador com o ambiente de execução da CLI. O arquivo de configuração carregado no navegador é o arquivo relevante para o aviso web do ownCloud.

O teste mais confiável é inspecionar o PHP a partir da mesma pilha web que serve o ownCloud. A documentação do ownCloud descreve o uso de uma phpinfo.phppágina temporária:

<?php phpinfo(); ?>

Coloque-o temporariamente na raiz da web, abra-o em um navegador e localize:

  • Arquivo de configuração carregado
  • limite_de_memória
  • API do servidor

Em seguida, exclua o arquivo phpinfo imediatamente . O ownCloud alerta que deixar uma página phpinfo pública expõe informações confidenciais do servidor.

Se o navegador exibir a mensagem " /etc/php/7.4/fpm/php.iniwhile" e php --inivocê disser "" /etc/php/7.4/cli/php.ini, agora você sabe exatamente por que editar o arquivo CLI não resolveu o problema.

4. PHP-FPM: aumentar o limite de tempo de execução da web para 512 MB

Editor Nano aberto em um arquivo php.ini do PHP-FPM com memory_limit definido para 512M
Para uma configuração Nginx ou Apache usando PHP-FPM, altere o FPM php.iniou a configuração de pool/site aplicável, e não apenas o arquivo CLI.

Em uma instalação típica do Debian ou Ubuntu:

sudo nano /etc/php/7.4/fpm/php.ini

Encontrar:

memory_limit = 128M

e altere para:

memory_limit = 512M

Utilize a versão do PHP instalada no caminho. Em seguida, reinicie o serviço FPM correto e o servidor web, se necessário.

sudo systemctl restart php7.4-fpm
sudo systemctl reload nginx

Para o Apache com proxy_fcgiFPM ou outra configuração semelhante, reinicie o PHP-FPM e recarregue o Apache.

O ownCloud também observa que o PHP-FPM não consome configurações do PHP de .htaccess. Se você depende de substituições por diretório com o FPM, use o mecanismo de configuração PHP/FPM compatível com seu ambiente, como o apropriado php.ini, configuração de pool ou .user.ini.

5. Apache com mod_php: editar a configuração do PHP no Apache

O editor Nano mostra o limite de memória (memory_limit) definido para 512M no arquivo php.ini do Apache, seguido por um comando de reinicialização do Apache.
Com o Apache mod_php, edite a configuração PHP específica do Apache e reinicie o Apache para que os novos processos de trabalho carreguem o novo limite.

Se o Apache carregar o PHP diretamente como um módulo, edite o arquivo específico do Apache:

sudo nano /etc/php/7.4/apache2/php.ini

Definir:

memory_limit = 512M

Em seguida, reinicie o Apache:

sudo systemctl restart apache2

Não copie o número da versão mecanicamente. Verifique a versão realmente carregada pelo Apache. Sistemas atualizados em várias versões do PHP geralmente mantêm vários diretórios em /etc/php/.

O critério de resultado é simples: após a reinicialização, o ambiente de execução PHP voltado para a web deve exibir o novo valor. Se ainda mostrar 128M, outra camada de configuração está sobrescrevendo sua alteração.

6. Atualize o limite da CLI quando o occ ou o cron estiverem usando pouca memória.

O aviso da página de administração web é gerado pelo ambiente de execução web, mas occas tarefas cron utilizam a CLI do PHP. A documentação do ownCloud menciona isso explicitamente.

Editar:

sudo nano /etc/php/7.4/cli/php.ini

Definir:

memory_limit = 512M

Em seguida, verifique:

php -r 'echo ini_get("memory_limit"), PHP_EOL;'

Não é necessário reiniciar um serviço para o PHP via linha de comando, pois cada invocação da linha de comando inicia um novo processo. No entanto, se sua tarefa cron chamar explicitamente outro binário do PHP, verifique qual é o binário exato em vez de presumir /usr/bin/phpque seja o que está sendo usado.

O ownCloud recomenda ser executado occcomo o usuário HTTP, normalmente www-dataem Debian/Ubuntu. Sua documentação oficial também alerta que occse deve usar a mesma versão do PHP do servidor web quando várias versões estiverem instaladas.

7. Docker: use OWNCLOUD_MEMORY_LIMIT em vez de editar arquivos dentro do contêiner.

Arquivo Docker Compose mostrando OWNCLOUD_MEMORY_LIMIT definido como 512M e o contêiner ownCloud sendo recriado.
Para o contêiner oficial do ownCloud, configure OWNCLOUD_MEMORY_LIMIT=512Mo ambiente do contêiner e recrie o serviço para que a configuração PHP gerada seja atualizada.

Para a imagem Docker oficial do ownCloud, utilize a variável de ambiente documentada:

environment:
  OWNCLOUD_MEMORY_LIMIT: 512M

Em seguida, recrie o serviço:

docker compose up -d

Não faça a correção principal editando php.inidentro de um contêiner efêmero. A recriação do contêiner pode descartar essas alterações. A documentação oficial do ambiente Docker do ownCloud define OWNCLOUD_MEMORY_LIMIT=512Me recomenda manter esse padrão.

Se o próprio host Docker tiver um limite de memória restrito, verifique também as restrições do contêiner:

docker stats

Um limite de 512M para PHP não concede magicamente 512 MB de memória livre ao contêiner; ele apenas permite que uma requisição PHP individual consuma até essa quantidade. O contêiner e o host ainda precisam de memória suficiente para todos os processos PHP simultâneos e outros serviços.

8. Reinicie o serviço correto e verifique a partir do mesmo ambiente de execução.

O terminal reinicia o PHP-FPM e o Nginx, e uma visão geral do ownCloud mostra o limite de memória do PHP em 512 MB, com as verificações aprovadas.
A correção só estará completa quando o ambiente de execução da web reportar 512 MB ou mais e o ownCloud não exibir mais o aviso de pouca memória.

Após reiniciar o serviço relevante, verifique novamente a página temporária do phpinfo ou a visão geral do painel de administração do ownCloud. Em seguida, remova a página do phpinfo.

Se você alterou o PHP-FPM, verifique:

sudo systemctl status php7.4-fpm
sudo systemctl status nginx

Se você alterou o Apache:

sudo systemctl status apache2

Atualize a página de administração do ownCloud. O aviso deverá desaparecer se o ownCloud estiver agora a funcionar com pelo menos o limite esperado.

9. Verifique a RAM do host antes de aumentar o limite do PHP além de 512 MB.

Terminal do Ubuntu mostrando memória livre, processos de trabalho do PHP-FPM e entradas recentes do log do ownCloud.
Após aumentar o limite por requisição, verifique a memória total do sistema e o comportamento dos processos PHP. Um limite máximo de uso de memória do PHP mais alto pode aumentar o consumo de RAM no pior cenário, quando muitos processos estão ativos.

Correr:

free -h
ps aux | grep php-fpm
vmstat 1

O PHP memory_limitimpõe um limite por script. Não se trata de uma reserva e não é o mesmo que a quantidade de RAM que o servidor precisa. Se você tiver 20 processos PHP e der permissão para que cada requisição utilize uma quantidade muito grande de memória, o pior cenário teórico pode exceder a RAM da máquina por uma grande margem.

A documentação de otimização do ownCloud traz o mesmo aviso geral para processos de servidor web: dimensione o número de processos para que o uso agregado de memória permaneça abaixo da RAM disponível; caso contrário, o sistema começará a usar a memória virtual (swap) e o desempenho cairá. Consulte as orientações de otimização do ownCloud Classic .

Se o aviso de 512M desapareceu e as operações normais estão ocorrendo sem problemas, não há motivo para aumentar o limite apenas para que o número seja maior.

10. Quando 512M ainda produz “Tamanho de memória permitido esgotado”

Um aviso de recomendação ignorado e uma falha por falta de memória são problemas diferentes. Se os registros contiverem mensagens como:

PHP Fatal error: Allowed memory size of ... bytes exhausted

Identifique a operação que desencadeia o problema. Grandes varreduras, tarefas de criptografia, operações de armazenamento externo, processamento de imagens ou um aplicativo de terceiros podem ter perfis de memória muito diferentes.

Verifique o log do ownCloud e o log de erros do PHP/servidor web. Uma instalação padrão do ownCloud grava seu próprio log no diretório de dados configurado, geralmente `/var/www/owncloud` data/owncloud.log. Evite considerar "aumentar para 1 GB" como o próximo passo automático. Primeiro, verifique se a mesma operação atinge o limite de memória repetidamente.

Se uma tarefa administrativa específica realmente precisar de mais memória, uma configuração específica na linha de comando pode ser mais segura do que atribuir um limite enorme a todas as requisições web de forma generalizada:

php -d memory_limit=1G occ <command>

Use isso somente quando o comando e o comportamento da memória forem compreendidos. Não corrige uma requisição web que passa pelo PHP-FPM ou Apache.

Por que o aviso pode permanecer após editar o php.ini?

SintomaCausa provávelPróxima verificação
php -rMostra 512 milhões, o ownCloud ainda mostra 128 milhões.Você alterou apenas o PHP da CLIVerifique o phpinfo do navegador e o arquivo de configuração carregado.
O arquivo FPM indica 512 MB, mas o navegador ainda mostra 128 MB.Pool, .user.iniou outro arquivo INI, o substitui.Inspecione os valores "local" e "master" do phpinfo, bem como os arquivos INI analisados ​​adicionais.
O valor só muda após a reinicialização.O serviço correto não foi reiniciado.Reinicie o PHP-FPM ou o Apache explicitamente após a edição.
O valor do Docker retorna à configuração anterior após a recriação.Você editou dentro do contêinerConfigure OWNCLOUD_MEMORY_LIMITno Compose ou no ambiente de implantação.
O aviso desaparece, mas o servidor começa a trocar dados.A concorrência em PHP excede a memória do host.Reduza o número de trabalhadores, otimize a carga de trabalho ou adicione RAM.

Não confunda memory_limit com limites de upload.

memory_limit, upload_max_filesize, e post_max_sizeresolvem problemas diferentes. Aumentar a memória PHP não permite automaticamente que os usuários enviem arquivos maiores. As notas de configuração do ownCloud 10.16 afirmam separadamente que post_max_sizeo limite mínimo documentado deve ser configurado para pelo menos 512 MB e explicam que os limites de upload precisam de configurações próprias.

Se o sintoma real for "falha em uploads grandes", verifique upload_max_filesizeos post_max_sizelimites de tamanho do corpo da requisição, os tempos limite e a capacidade do disco temporário do proxy/servidor web. Não use um valor maior memory_limitcomo substituto para esses controles.

Lista de verificação final

  • Confirme o aviso e o valor atual no ownCloud.
  • Identifique se o ownCloud usa Apache mod_php ou PHP-FPM.
  • Localize o arquivo de configuração carregado do ambiente de execução da web .
  • Configure o PHP da web memory_limitpara pelo menos 512M.
  • Atualize também o PHP da CLI se occo cron estiver usando um limite inferior.
  • Para o Docker, configure OWNCLOUD_MEMORY_LIMIT=512Mno ambiente de implantação.
  • Reinicie ou recrie o serviço que está executando o PHP.
  • Verifique o valor no ambiente de execução da web, não apenas na linha de comando.
  • Confirme se o aviso do ownCloud desapareceu.
  • Monitore a RAM e a memória swap do host antes de aumentar o limite além de 512 MB.

Resumindo

A solução definitiva para o erro “Limite de memória PHP abaixo do valor recomendado” no ownCloud 10 é configurar o ambiente de execução PHP que executa o ownCloud para usar um limite de 512 MB ou superior e, em seguida, verificar o resultado com o mesmo ambiente de execução. O erro mais comum ocorre ao editar o arquivo de configuração /etc/php/.../cli/php.inienquanto o ownCloud está sendo executado por meio do PHP-FPM ou Apache com um arquivo de configuração diferente.

Pare assim que o aviso desaparecer, as operações de rotina estiverem funcionando corretamente e o host tiver memória disponível com folga suficiente. Se o PHP ainda consumir 512 MB durante uma operação específica, mude de "aumentar o limite" para diagnóstico da carga de trabalho: inspecione o comando com falha, os aplicativos, os logs, a concorrência e a RAM física. Um limite maior pode ser apropriado, mas somente quando a carga de trabalho justificar e o servidor puder suportá-lo com segurança.

Deixar um comentário

10 Melhores Ferramentas de Varredura de Ping para Encontrar Dispositivos na Sua Rede

10 Melhores Ferramentas de Varredura de Ping para Encontrar Dispositivos na Sua Rede

Compare 10 ferramentas de varredura de ping para descoberta rápida de LAN, varredura multiplataforma e gerenciamento de endereços IP. Saiba o que uma varredura pode — e não pode — revelar.

6 Melhores Ferramentas de Gerenciamento de Rede para Monitorar o Desempenho

6 Melhores Ferramentas de Gerenciamento de Rede para Monitorar o Desempenho

Compare seis ferramentas de gerenciamento de rede para monitoramento de desempenho, incluindo cobertura SNMP, mapeamento, alertas, modelos de implantação e custo-benefício.

Melhores analisadores de Wi-Fi para Windows, iOS e Android

Melhores analisadores de Wi-Fi para Windows, iOS e Android

Compare as melhores opções de analisadores de Wi-Fi para Windows, iPhone e Android, incluindo ferramentas para congestionamento de canais, cobertura de sinal, mapas de calor e solução de problemas de rede.

Monitor de Ping: 7 ferramentas gratuitas e de código aberto para disponibilidade de rede

Monitor de Ping: 7 ferramentas gratuitas e de código aberto para disponibilidade de rede

Compare sete monitores de ping gratuitos e de código aberto, desde suítes completas de rede até sondas de latência específicas, e escolha a opção mais adequada para disponibilidade, perda de pacotes e histórico.

Taxa de transferência de rede versus largura de banda: o que significam e como afetam o desempenho

Taxa de transferência de rede versus largura de banda: o que significam e como afetam o desempenho

Veja como a taxa de transferência de rede difere da largura de banda, o que causa desempenho lento ou instável e quais ferramentas podem testar um caminho ou monitorar o tráfego.

Melhor software de servidor SFTP para transferências seguras de arquivos

Melhor software de servidor SFTP para transferências seguras de arquivos

Compare softwares de servidor SFTP confiáveis ​​para Windows e Linux, incluindo OpenSSH, Bitvise, SolarWinds e SFTPGo. Encontre a solução ideal para suas necessidades de segurança e transferência de arquivos.

Melhores práticas de monitoramento de rede: o que monitorar e quais ferramentas usar

Melhores práticas de monitoramento de rede: o que monitorar e quais ferramentas usar

Crie um monitoramento de rede prático com cobertura clara de dispositivos, métricas de desempenho úteis, alertas acionáveis ​​e uma comparação entre SolarWinds NPM, PRTG e OpManager.

As 7 melhores ferramentas de gerenciamento de endereços IP para equipes de rede

As 7 melhores ferramentas de gerenciamento de endereços IP para equipes de rede

Compare sete ferramentas de gerenciamento de endereços IP para descoberta de sub-redes, coordenação de DNS e DHCP, inventário de rede e IPAM de código aberto.

10 Melhores Ferramentas de Varredura de Rede para Descobrir Dispositivos e IPs

10 Melhores Ferramentas de Varredura de Rede para Descobrir Dispositivos e IPs

Compare ferramentas de varredura de rede para descoberta rápida de dispositivos, varreduras de IP multiplataforma e IPAM corporativo, com orientações sobre como escolher a opção mais adequada para sua rede.

6 ferramentas de monitoramento de rede Linux para dispositivos, hosts e tráfego.

6 ferramentas de monitoramento de rede Linux para dispositivos, hosts e tráfego.

Compare seis ferramentas de monitoramento de rede Linux para descoberta de dispositivos SNMP, gráficos de interface, métricas de host, verificação de serviços e fluxos de tráfego.