我刚刚注意到,使用ini_set()
无法将内存限制增加到超过php.ini中配置的值。但是,我可以将其设置为低于该值的任何值,并将其增加到ini文件中定义的其他任何低于该值的值。
有人知道为什么会发生这种情况或者如何解决吗?
根据手册来看,设置内存限制可以在任何地方进行,这很奇怪。
您是否安装了Suhosin?使用Suhosin,可以强制实施全局内存限制。
您是否有一个.htaccess
文件,其中包含php_value memory_limit xyz
的设置?
您是否激活了Shell Fork Bomb保护?它可以强制进行全局内存限制。请参见此处的SO问题(我想这可能是Suhosin的一部分)。
您的phpinfo()关于“本地”和“全局”memory_limit值有什么说法?
您如何指定内存限制?能否发布代码片段?
suhosin.memory_limit
默认值导致了这种行为:http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit - soulmerge在共享主机账户上,您无法覆盖内存限制。这很简单。获取私人(专用)托管,并要求您的提供商将其全部设置(虽然不建议这样做)。
检查您的“safe_mode”设置 - 如果启用,可能会阻止您提高memory_limit(尽管没有记录)。
在池配置文件中有一个额外的memory_limit(即每个池都可以配置一个硬内存限制),例如:
php_admin_value[memory_limit] = 256M
ini_set('memory_limit', $value)
将返回false。
php.ini
中更改它(这是我的开发机器),但文档记录的行为是它可以在运行时更改,我想要一个或两个文件的更高限制,而不是整个项目。 ini指令的文档:http://de.php.net/manual/en/ini.core.php#ini.sect.resource-limits - soulmerge