2012-02-14 81 views
35

Por razones de maldad tengo que establecer memory_limits más alto que 1G para un directorio, pero en mi PHP 5.2.17 en el servidor de Lenny cuando pongo por ejemplo 2048M obtengo solo el php.ini valor predeterminado (256M).PHP: configuración memory_limits> 1024M no funciona

PHP se ejecuta como un módulo de Apache, phpinfo nos dan (para el directorio)

memory_limit 1024M 256M 
suhosin.memory_limit 0 0 

¿Hay una limitación debida al módulo de Apache, PHP o conf? Sé que el servidor solo tiene 4G de RAM, solo es un script especial.

+1

estoy en la misma situación en este momento. Así que entiendo el: "Por motivos de maldad"! –

Respuesta

76

¿Cómo intentas establecer el límite de memoria? phpinfo() muestra el límite actual de memoria reservada de PHP, esto es lo que está disponible debido a que php.ini tiene establecido como límite de memoria

Escribir esto en Apache .htaccess en su directorio de scripts podría funcionar, si su servidor admite la configuración de PHP comandos a través de .htaccess:

php_value memory_limit 2048M 

Puesto que puede ser posible que los comandos .htaccess para configurar los valores de PHP están apagados. A continuación, también puede probar esto desde código PHP:

ini_set('memory_limit', '2048M'); 

Si esto no funciona y .htaccess también no funciona, entonces usted necesita ponerse en contacto con los administradores del servidor.

+1

Uso php_value o ini_set, el mismo problema: si configuro 512M o 1024M, está bien, si configuro 1500M o 2048M, obtengo 256Mo (el valor predeterminado de php.ini) –

+1

En este caso, parece estar fuera de PHP manos, ¿cuál es el valor máximo que puede asignar o es 1024M máximo? – kingmaple

+0

Podemos hacer un malloc() de 4.5G. ¿He entendido tu respuesta? –

-2

Tuve un problema con estos errores también, con la importación de archivos XLS a DB.

La solución fue ini_set('memory_limit', '2048M'); aplicar este comando directamente en el archivo donde está el problema.

Por ejemplo: Phpmyadmin\libraries\PHPExcel\PHPExcel\Worksheet.php

+4

Bueno, la otra respuesta ya dice lo mismo. ¿Cómo es tu respuesta útil? –

12

Tuve el mismo problema cuando necesitaba mi script PHP para usar 4 GB de RAM. La razón no importa. El objetivo era establecer un límite de 4 GB en PHP.

La idea inicial era usar ini_set('memory_limit', '4096M'); pero descubrí que esto no funcionaba. No tengo ni idea de cómo ni por qué ser honesto, pero eso no era importante para mí en ese momento. Estoy en un sistema con 32 GB de RAM, tiene que ser posible.

Encontré que establecer un límite de 1 MB menos trabajado, es una solución que funcionó para mí.

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB 

Editar noviembre '16: En realidad, nunca he jugado con él antes, pero me he dado cuenta en mi sistema que este valor parece eliminar por completo todos los límites de memoria para mí. Puedo usar toda la RAM que pueda proporcionar mi sistema.

+0

¿entendiste por qué 4096mb no está funcionando? Me sucedió en php 7. Este "error" (idk si es un error) no mostró nada en la página ni error. He puesto también error_reporting. –

16
ini_set("memory_limit",-1); 

Esto debería eliminar normalmente límites

+6

establecer un valor uno negativo (-1) significa que puede ocupar tanto espacio según la capacidad de memoria real de la máquina utilizada –

+5

Esta es una práctica muy mala en un entorno de producción real. – walther

+0

@walther, ¿por qué dices eso? Funciona o no ? – pollux1er