2012-02-14 2 views
35

Per motivi negativi ho bisogno di impostare memory_limits superiore a 1G per una directory, ma sul mio PHP 5.2.17 sul server Lenny quando inserisco per esempio 2048M ottengo solo il php.ini valore predefinito (256 M).PHP: settings memory_limits> 1024M non funziona

PHP eseguito come modulo di Apache, phpinfo ci danno (per la directory)

memory_limit 1024M 256M 
suhosin.memory_limit 0 0 

C'è una limitazione di modulo di Apache, PHP o conf? So che il server ha solo 4G di RAM, è solo uno script speciale.

+1

Sono nella stessa situazione in questo momento. Capisco così: "Per motivi negativi"! –

risposta

76

Come stai cercando di impostare il limite di memoria? phpinfo() mostra il limite di memoria riservata PHP corrente, questo è ciò che è disponibile a causa di php.ini che ha quell'insieme come limite di memoria

Scrivendo questo in Apache .htaccess nella directory degli script potrebbe funzionare, se il server supporta l'impostazione di PHP comandi tramite .htaccess:

Poiché potrebbe essere possibile che i comandi .htaccess per l'impostazione di valori PHP siano disattivati. Poi si può anche provare questo da codice PHP:

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

Se questo non funziona e .htaccess anche non funziona, allora avete bisogno di contattare gli amministratori del server.

+1

Io uso php_value o ini_set, lo stesso problema: se imposto 512M ou 1024M, è ok, se imposto 1500M o 2048M, ottengo 256Mo (il valore predefinito da php.ini) –

+1

In questo caso sembra essere fuori dal PHP mani, qual è il valore massimo che puoi assegnare o è 1024M max? – kingmaple

+0

Possiamo fare un malloc() di 4.5G. Ho capito la tua risposta? –

-2

Ho riscontrato un problema con questo errore, con l'importazione del file XLS nel DB.

La soluzione era ini_set('memory_limit', '2048M'); applicare questo comando direttamente nel file in cui si trova il problema.

Ad esempio: Phpmyadmin\libraries\PHPExcel\PHPExcel\Worksheet.php

+4

Bene, l'altra risposta dice già la stessa cosa. Come è utile la tua risposta? –

12

Ho avuto lo stesso problema in cui avevo bisogno del mio script PHP per utilizzare 4 GB di RAM. La ragione non ha importanza. L'obiettivo era impostare un limite di 4 GB in PHP.

L'idea iniziale era di usare ini_set('memory_limit', '4096M'); ma ho scoperto che questo non funzionava. Non ho idea di come o perché essere onesto, ma non era importante per me al momento. Sono su un sistema con 32 GB di RAM, deve essere possibile.

Ho trovato che l'impostazione di un limite di 1 MB in meno ha funzionato correttamente, è una soluzione che ha funzionato per me.

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

Modifica novembre '16: In realtà, non ho mai veramente giocato con lui prima, ma ho notato sul mio sistema che questo valore sembra per rimuovere completamente tutti i limiti di memoria per me. Sono in grado di utilizzare tutta la RAM che il mio sistema offre.

+0

hai capito perché 4096mb non funziona? È successo con me su php 7. questo "bug" (idk se è bug) non ha mostrato nulla sulla pagina né errori. Ho messo anche error_reporting. –

16
ini_set("memory_limit",-1); 

Questo dovrebbe rimuovere normalmente limiti

+6

impostando un valore negativo (-1) significa che può occupare tutto lo spazio in base alla capacità effettiva della memoria della macchina utilizzata –

+5

Questa è una pratica molto negativa in un ambiente di produzione reale. – walther

+0

@walther, perché lo dici? Funziona o no? – pollux1er