2012-08-09 63 views
40

我有一個問題增加PHP的內存限制爲Apache模塊。如何增加超過2GB的PHP內存限制?

如果我把下面的指令在Apache配置,這項工作確定:

php_value memory_limit 1.99G 

但超過2GB不工作,這是恢復該值回128MB。

這裏有什麼問題?我需要更多內存來處理一些PDF相關任務。

服務器是Debian 2.6.32-5-amd64#1 SMP,PHP 5.3.3-7 + squeeze13帶有12GB物理內存。

+7

2G Apache進程!哇。 – Ray 2012-08-09 14:05:01

+0

也許你應該把apache配置作爲默認配置,並且'ini_set('memory_limit',-1);'只在你需要的文件上。看看是否有效。 – JRomero 2012-08-09 14:07:52

+0

使用MB代替GB不會改變任何內容。我有一些其他的限制,也許在Apache配置的某處。另外,據我所知memory_limit不能在運行時更改,默認值是128MB。也許我可以在主php.ini中設置,但我不希望其他VHOST有這麼大的設置,所以我使用它每個VHOST。 – mikikg 2012-08-09 14:12:43

回答

32

您是否嘗試過使用MB的價值?

php_value memory_limit 2048M 

也可以嘗試在php.ini阿帕奇編輯這個值

+1

是的,它必須在php.ini。出於某種原因,在apache配置中不能工作在2G以上(工作時沒有其他較低值的問題)。 – mikikg 2012-08-13 21:34:41

+0

嗨......實際上我使用的是zend,所以如何使用zend的內存 – 2013-10-05 11:32:06

+0

這是說,如果你有足夠的內存可用,那麼PHP可以消耗多少內存幾乎沒有限制? – dotslash 2015-11-22 07:14:39

1

輸入以下到Apache的配置:

php_value memory_limit 2048M 
3

您應該在支持64位操作系統,64位Apache版本和PHP相同的硬件上安裝64位操作系統。但是這並不能保證使用PDF的函數可以使用如此大的內存。你最好不要將整個文件加載到內存中,將它拆分成塊或使用文件函數來查找它,而不加載到RAM中。

+0

它已經是64位了: Linux myHOST 2.6.32-5-amd64#1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/Linux – mikikg 2012-08-09 14:14:25

+0

Apache怎麼樣? – Timur 2012-08-09 15:07:33

+0

Apache是​​來自Debian的股票版本2.2.16-6 + squeeze7。我認爲這是64位編譯。 – mikikg 2012-08-09 15:26:33

26

我建議你在錯誤的光線下看問題。這個任務應該是'我在做什麼需要2G內存在apache進程中通過apache模塊使用Php,並且這個工具是否適合這項工作?

是的,你可以將一枚火箭綁在福特平託上,但它可能不是正確的解決方案。不管怎樣,如果你真的需要它,我會提供火箭......你可以添加到腳本的頂部。

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

這將只爲腳本設置它。你仍然需要告訴apache允許這麼多的php腳本(我認爲)。

+1

我知道,腳本不是我的,它是一些html2pdf轉換器,並輸入到它非常大的HTML頁面。 – mikikg 2012-08-09 14:16:53

+0

@mikikg看到上面的答案 – Ray 2012-08-09 14:31:08

+0

正確的解決方案和正確的解釋!我碰到了只有一個腳本的內存限制,我的站點地圖索引了太多的頁面(存儲在數據庫中)。完美的解決方案,網站地圖有很高的內存限制,其他一切都保持不變。 – HoldOffHunger 2017-07-08 01:13:00

12

對於無限的內存限制的描述memory_limit變量設置-1

ini_set('memory_limit', '-1'); 
+1

很高興知道無限的內存是可能的,但是,我不認爲我很快就會在代碼中使用它。 =) – HoldOffHunger 2017-07-08 01:15:14