2010-01-29 24 views
8

增加memory_limit我只注意到我無法使用ini_set()將我的內存限制增加到在php.ini中配置的值以上。但是,我可以將其設置爲低於該值的任何值,並將其增加至低於ini-file中定義的值的任何其他值。無法使用ini_set()

有誰知道爲什麼會發生這種情況,或者我該如何修復它?

+0

您是否運行自己的服務器?或者你有一個託管帳戶? – 2010-01-29 12:16:57

+4

我相信memory_limit是一個受保護的設置。在共享服務器上允許腳本使用所有可用內存是沒有意義的。所以如果你在一個共享服務器上,解決方法是詢問你的託管公司;在專用的服務器上,它將在您的php.ini中更改該設置。 – zneak 2010-01-29 12:20:13

+0

Zneak是對的。您可以要求您的ISP爲您增加限制。 – Ben 2010-01-29 12:23:19

回答

12

這很奇怪,根據手冊的內存限制可以在任何地方設置。

  • 您是否安裝了Suhosin?有了Suhosin,就有可能強加全局內存限制。

  • 你有一個.htaccess文件躺在某處說php_value memory_limit xyz

  • 你有沒有激活Shell Fork Bomb保護?它可以強制全局內存限制。見SO問題here。 (我想這可能是Suhosin的一部分)。

  • 你的phpinfo()對「本地」和「全局」memory_limit值的說法是什麼?

  • 如何指定限制,您可以發佈代碼段?

+3

非常感謝,它是suhosin補丁。 'suhosin.memory_limit'的默認值導致了這種行爲:http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit – soulmerge 2010-02-12 11:26:28

1

檢查您的「safe_mode」設置 - 如果啓用,它可能會阻止您提高memory_limit(雖然沒有記錄)。

+0

'safe_mode'被禁用 – soulmerge 2010-01-29 17:10:38

0

您無法覆蓋共享主機帳戶的內存限制。這很簡單。獲得私人(專用)託管服務,並要求您的提供商將其設置爲一路(儘管不推薦)。

+0

共享主機帳戶無法使用的原因是它們通常啓用了'safe_mode',而在本地計算機上則不是這種情況。 – soulmerge 2010-02-12 11:20:18