Inicio
» ADMINISTRADOR DE RED
»
Solucionar el error “Límite de memoria PHP por debajo del valor recomendado” en ownCloud 10
Solucionar el error “Límite de memoria PHP por debajo del valor recomendado” en ownCloud 10
El resultado que se busca no es simplemente que "la advertencia haya desaparecido". Una solución correcta implica que el proceso PHP que realmente gestiona ownCloud 10 informe de un límite de memoria de al menos 512 MB, que la advertencia del administrador de ownCloud desaparezca, que las tareas programadas o de la CLI también utilicen un límite adecuado, y que el host siga teniendo suficiente memoria física para ejecutar PHP, el servidor web, la base de datos y las tareas en segundo plano sin un uso excesivo de la memoria virtual.
Para ownCloud Classic 10.16, el entorno Docker oficial utiliza OWNCLOUD_MEMORY_LIMIT=512Mcomo configuración predeterminada recomendada. La documentación de ownCloud también distingue la configuración PHP utilizada por el servidor web de la utilizada por php-cli. Esa distinción es la razón principal por la que los administradores a veces cambian memory_limit, reinician un servicio y aún ven la misma advertencia.
Esta guía comienza con las comprobaciones menos intrusivas y luego muestra las rutas de Apache, PHP-FPM, CLI y Docker. También explica cuándo está justificado aumentar aún más el límite y cuándo el problema real es la memoria RAM insuficiente del host, en lugar de la configuración de PHP en sí.
Cómo se ve el éxito
Controlar
Buen resultado
Si falla
Descripción general del administrador de ownCloud
No hay advertencia de "límite de memoria PHP por debajo del valor recomendado"
Probablemente modificaste la configuración de PHP incorrecta o no reiniciaste el servicio correcto.
Entorno de ejecución Web PHP
memory_limitmuestra 512M o superior
Localice el archivo de configuración cargado utilizado por la solicitud web.
CLI / tiempo de ejecución de cron
php -r 'echo ini_get("memory_limit");'muestra el valor previsto
php.iniEdita también la configuración específica de la CLI .
Memoria del host
Suficiente RAM disponible; poca o ninguna presión de intercambio sostenida.
No aumentes los límites de PHP a ciegas. Revisa la cantidad de procesos de PHP o el tamaño del servidor.
Registros
No se producen errores recurrentes de "Tamaño de memoria permitido agotado".
Identifique la carga de trabajo que consume memoria antes de volver a aumentar el límite.
1. Confirma la advertencia y el valor que ve ownCloud.
Comience con el valor visible para ownCloud. Un límite de tiempo de ejecución web de 128 MB o 256 MB es inferior al valor de 512 MB utilizado por la configuración de Docker recomendada por ownCloud.
Abre la configuración de administración de ownCloud y observa la advertencia sobre el límite de memoria. Antes de realizar cualquier cambio, anota la versión de ownCloud, la versión de PHP, el tipo de servidor web y el límite de memoria actual. Esto te servirá de referencia y te ayudará a evitar instalar PHP incorrectamente en sistemas con varias versiones.
La documentación actual de ownCloud 10.16 indica que los requisitos del servidor dependen en gran medida del número de usuarios, la cantidad de archivos y la actividad. Su configuración de Docker establece OWNCLOUD_MEMORY_LIMIT=512My recomienda mantener esa configuración predeterminada. Esto hace que 512 MB sea una base razonable para resolver la advertencia, pero no garantiza que todas las cargas de trabajo quepan dentro de 512 MB.
2. No confíe en el valor de la CLI para representar el servidor web.
php --iniInforma sobre la configuración de PHP CLI. Esta puede diferir de la configuración de PHP utilizada por Apache o PHP-FPM para dar servicio a ownCloud.
Ejecute estos comandos para ver qué utiliza el proceso PHP de línea de comandos:
Esto es útil para occtareas programadas (cron jobs), pero no es prueba de lo que utiliza la solicitud web. ownCloud documenta explícitamente rutas de configuración separadas, tales como:
Si su CLI dice 512M mientras que la página de administración sigue quejándose, esa discrepancia es una fuerte señal de que el servidor web está cargando otro php.ini.
3. Encuentra la configuración de PHP utilizada por la solicitud web.
Compara el entorno de ejecución de PHP del navegador con el entorno de ejecución de la CLI. El archivo de configuración cargado en el navegador es el que importa para la advertencia web de ownCloud.
La prueba más fiable consiste en inspeccionar PHP desde la misma pila web que aloja ownCloud. La documentación de ownCloud describe el uso de una phpinfo.phppágina temporal:
<?php phpinfo(); ?>
Colóquelo temporalmente en la raíz del sitio web, ábralo en un navegador y localice:
Archivo de configuración cargado
límite_de_memoria
API del servidor
Luego, elimine el archivo phpinfo inmediatamente . ownCloud advierte que dejar una página phpinfo pública expone información confidencial del servidor.
Si el navegador dice /etc/php/7.4/fpm/php.inimientras php --inidice /etc/php/7.4/cli/php.ini, ahora sabes exactamente por qué editar el archivo CLI no eliminó la advertencia.
4. PHP-FPM: aumentar el límite de tiempo de ejecución web a 512 MB.
Para una configuración de Nginx o Apache que utilice PHP-FPM, cambie el FPM php.inio la anulación del pool/sitio correspondiente, no solo el archivo CLI.
En una instalación típica de Debian o Ubuntu:
sudo nano /etc/php/7.4/fpm/php.ini
Encontrar:
memory_limit = 128M
y cámbialo a:
memory_limit = 512M
Utilice la versión de PHP instalada en la ruta. A continuación, reinicie el servicio FPM correspondiente y su servidor web si es necesario:
Para Apache con proxy_fcgiu otra configuración de FPM, reinicie PHP-FPM y recargue Apache en su lugar.
ownCloud también señala que PHP-FPM no consume la configuración de PHP de .htaccess. Si depende de anulaciones por directorio con FPM, utilice el mecanismo de configuración de PHP/FPM compatible con su entorno, como la php.iniconfiguración de grupo apropiada o .user.ini.
5. Apache con mod_php: edite la configuración de Apache PHP
Con Apache mod_php, edite la configuración PHP específica de Apache y reinicie Apache para que los nuevos procesos de trabajo carguen el nuevo límite.
Si Apache carga PHP directamente como un módulo, edite el archivo específico de Apache:
sudo nano /etc/php/7.4/apache2/php.ini
Colocar:
memory_limit = 512M
Luego, reinicie Apache:
sudo systemctl restart apache2
No copie el número de versión mecánicamente. Compruebe la versión que realmente carga Apache. Los sistemas actualizados a través de varias versiones de PHP a menudo conservan varios directorios en /etc/php/.
El criterio de resultado es sencillo: tras el reinicio, el entorno de ejecución PHP visible para la web debe mostrar el nuevo valor. Si sigue mostrando 128M, otra capa de configuración está sobrescribiendo tu modificación.
6. Actualizar el límite de la CLI cuando occ o cron utilicen muy poca memoria.
La advertencia web de administración se genera mediante el entorno de ejecución web, pero occlas tareas programadas (cron jobs) utilizan la interfaz de línea de comandos de PHP. La documentación de ownCloud lo especifica claramente.
Editar:
sudo nano /etc/php/7.4/cli/php.ini
Colocar:
memory_limit = 512M
Luego verifique:
php -r 'echo ini_get("memory_limit"), PHP_EOL;'
No es necesario reiniciar un servicio para PHP de línea de comandos, ya que cada invocación de la línea de comandos inicia un nuevo proceso. Sin embargo, si su tarea programada (cron job) llama explícitamente a otro binario de PHP, verifique que se trate del binario exacto en lugar de asumir /usr/bin/phpque es el que se está utilizando.
ownCloud recomienda ejecutarlo occcomo usuario HTTP, normalmente www-dataen Debian/Ubuntu. Su documentación oficial de occ también advierte que occse debe usar la misma versión de PHP que el servidor web cuando hay varias versiones instaladas.
7. Docker: utilice OWNCLOUD_MEMORY_LIMIT en lugar de editar archivos dentro del contenedor.
Para el contenedor oficial de ownCloud, configúrelo OWNCLOUD_MEMORY_LIMIT=512Men el entorno del contenedor y vuelva a crear el servicio para que se actualice la configuración PHP generada.
Para la imagen oficial de Docker de ownCloud, utilice la variable de entorno documentada:
environment:
OWNCLOUD_MEMORY_LIMIT: 512M
Luego, vuelva a crear el servicio:
docker compose up -d
No realice la corrección principal editando php.inidentro de un contenedor efímero. La recreación del contenedor puede descartar esos cambios. La documentación oficial del entorno Docker de ownCloud define OWNCLOUD_MEMORY_LIMIT=512My recomienda mantener esa configuración predeterminada.
Si el propio host de Docker tiene un límite de memoria estricto, inspeccione también las restricciones del contenedor:
docker stats
Un límite de PHP de 512 MB no otorga mágicamente al contenedor 512 MB de memoria libre; solo permite que una solicitud individual de PHP consuma hasta esa cantidad. El contenedor y el host aún necesitan suficiente memoria para todos los procesos PHP simultáneos y otros servicios.
8. Reinicie el servicio correcto y verifique desde el mismo entorno de ejecución.
La solución solo se considerará completa cuando el entorno de ejecución web informe de 512 MB o más y ownCloud ya no muestre la advertencia de poca memoria.
Tras reiniciar el servicio correspondiente, vuelva a comprobar la página temporal de información de PHP o la vista general de administración de ownCloud. A continuación, elimine la página de información de PHP.
Si ha modificado PHP-FPM, compruebe lo siguiente:
sudo systemctl status php7.4-fpm
sudo systemctl status nginx
Si cambiaste Apache:
sudo systemctl status apache2
Actualiza la página de administración de ownCloud. La advertencia debería haber desaparecido si ownCloud ahora se está ejecutando con al menos el límite esperado.
9. Compruebe la memoria RAM del host antes de aumentar el límite de PHP más allá de 512 MB.
Tras aumentar el límite por solicitud, compruebe la memoria total del sistema y el comportamiento de los procesos PHP. Un límite superior para PHP puede incrementar el consumo de RAM en el peor de los casos cuando hay muchos procesos activos.
Correr:
free -h
ps aux | grep php-fpm
vmstat 1
El memory_limitlímite de PHP es por script. No es una reserva ni equivale a la cantidad de RAM que necesita el servidor. Si tienes 20 procesos PHP y le das permiso a cada solicitud para usar una gran cantidad de memoria, en el peor de los casos teóricos, la RAM de la máquina podría superarse con creces.
La documentación de optimización de ownCloud ofrece la misma advertencia general para los procesos del servidor web: ajuste el número de procesos de forma que el uso total de memoria se mantenga por debajo de la RAM disponible; de lo contrario, el sistema comenzará a usar el intercambio de memoria y el rendimiento disminuirá. Consulte la guía de optimización de ownCloud Classic .
Si la advertencia de 512M ha desaparecido y las operaciones normales funcionan correctamente, no hay razón para aumentar el límite solo para que el número sea mayor.
10. Cuando 512M sigue produciendo “Tamaño de memoria permitido agotado”
Una advertencia de recomendación borrada y un fallo por agotamiento de memoria son problemas diferentes. Si los registros contienen mensajes como:
PHP Fatal error: Allowed memory size of ... bytes exhausted
Identifique la operación que lo desencadena. Los escaneos grandes, las tareas de cifrado, las operaciones de almacenamiento externo, el procesamiento de imágenes o una aplicación de terceros pueden tener perfiles de memoria muy diferentes.
Revisa el registro de ownCloud y el registro de errores del servidor web/PHP. Una instalación estándar de ownCloud escribe su propio registro en el directorio de datos configurado, generalmente data/owncloud.log. Evita considerar “aumentarlo a 1G” como el siguiente paso automático. Primero, determina si la misma operación alcanza repetidamente el límite.
Si una tarea administrativa conocida necesita legítimamente más memoria, una anulación específica de la interfaz de línea de comandos puede ser más segura que asignar globalmente un límite enorme a cada solicitud web:
php -d memory_limit=1G occ <command>
Utilice esto únicamente cuando comprenda el comportamiento del comando y de la memoria. No soluciona los problemas de las solicitudes web que se ejecutan a través de PHP-FPM o Apache.
Por qué puede persistir la advertencia después de editar php.ini
Síntoma
Causa probable
Siguiente comprobación
php -rmuestra 512M, ownCloud todavía muestra 128M
Solo cambiaste la CLI PHP
Comprueba la información de PHP en tu navegador y su archivo de configuración cargado.
El archivo FPM indica 512 MB, pero el navegador sigue mostrando 128 MB.
El grupo, .user.iniu otro archivo INI lo sobrescribe.
Inspeccione los valores "local" y "master" de phpinfo y los archivos INI analizados adicionales.
Los cambios de valor solo se producen después de reiniciar.
El servicio correcto no se reinició.
Reinicie PHP-FPM o Apache explícitamente después de la edición.
El valor de Docker vuelve a la configuración anterior después de recrearlo.
Editaste dentro del contenedor
Configurado OWNCLOUD_MEMORY_LIMITen Compose o en el entorno de despliegue.
La advertencia desaparece, pero el servidor comienza a intercambiar.
La concurrencia de PHP excede la memoria del host.
Reduzca el número de trabajadores, optimice la carga de trabajo o añada memoria RAM.
No confunda memory_limit con los límites de carga.
memory_limity resuelven diferentes problemas. Aumentar la memoria PHP no permite automáticamente a los usuarios subir archivos más grandes. Las notas de configuración de ownCloud 10.16 indican por separado que upload_max_filesizedebe configurarse a al menos 512 MB para el mínimo documentado y explican que los límites de carga necesitan su propia configuración.post_max_sizepost_max_size
Si el síntoma real es que “las cargas grandes fallan”, revise upload_max_filesizelos post_max_sizelímites de tamaño del cuerpo del proxy/servidor web, los tiempos de espera y la capacidad del disco temporal. No utilice un valor superior memory_limitcomo sustituto de esos controles.
Lista de verificación final
Confirma la advertencia y el valor actual en ownCloud.
Identifica si ownCloud utiliza Apache mod_php o PHP-FPM.
Localice el archivo de configuración cargado del entorno de ejecución web .
Configure el PHP web memory_limita al menos 512M.
Actualiza también la CLI de PHP si occcron utiliza un límite inferior.
Para Docker, se configura OWNCLOUD_MEMORY_LIMIT=512Men el entorno de despliegue.
Reinicie o vuelva a crear el servicio que realmente sirve PHP.
Verifique el valor desde el entorno de ejecución web, no solo desde la línea de comandos.
Confirma que la advertencia de ownCloud ha desaparecido.
Supervise la memoria RAM y la memoria de intercambio del host antes de aumentar el límite más allá de 512 MB.
En resumen
La solución definitiva para el error "Límite de memoria PHP por debajo del valor recomendado" en ownCloud 10 consiste en configurar el entorno de ejecución de PHP que realmente sirve a ownCloud con un límite de 512 MB o superior, y luego verificar el resultado con el mismo entorno de ejecución. El fallo más común se produce al editar /etc/php/.../cli/php.iniun archivo de configuración mientras ownCloud se ejecuta a través de PHP-FPM o Apache.
Deténgase una vez que la advertencia haya desaparecido, las operaciones rutinarias funcionen correctamente y el servidor tenga suficiente memoria disponible. Si PHP sigue consumiendo 512 MB durante una operación específica, pase de "aumentar el límite" a un diagnóstico de carga de trabajo: inspeccione el comando que falla, las aplicaciones, los registros, la concurrencia y la memoria RAM física. Un límite mayor puede ser apropiado, pero solo cuando la carga de trabajo lo justifique y el servidor pueda soportarlo de forma segura.