【问题标题】:Cannot increase memory_limit with ini_set()无法使用 ini_set() 增加 memory_limit
【发布时间】:2010-01-29 12:14:25
【问题描述】:

我刚刚注意到,我无法使用ini_set() 将内存限制增加到超过 php.ini 中配置的值。但是,我可以将其设置为低于该值的任何值,并将其增加到低于 ini 文件中定义的值的任何其他值。

有谁知道为什么会发生这种情况或我该如何解决?

【问题讨论】:

  • 您运行自己的服务器吗?还是您有托管帐户?
  • 我相信 memory_limit 是一个受保护的设置。在共享服务器上允许脚本使用所有可用内存是没有意义的。因此,如果您在共享服务器上,则可以询问您的托管公司;在专用服务器上,更改 php.ini 中的设置。
  • Zneak 是对的。您可以要求您的 ISP 为您增加限制。
  • 我知道我可以在php.ini(它是我的开发机器)中更改它,但记录的行为是它在运行时是可变的,我想要更高的限制一两个文件,而不是整个项目。 ini 指令文档:de.php.net/manual/en/ini.core.php#ini.sect.resource-limits
  • 不要问你的 ISP,问你的托管公司!

标签: php


【解决方案1】:

这很奇怪,根据手册,内存限制可以在任何地方设置。

  • 您是否安装了 Suhosin?使用 Suhosin,可以施加全局内存限制。

  • 您是否有一个 .htaccess 文件在某个地方,上面写着 php_value memory_limit xyz

  • 您是否激活了 Shell Fork Bomb 保护?它可以施加全局内存限制。请参阅 SO 问题 here。 (我想这可能是 Suhosin 的一部分)。

  • 您的 phpinfo() 对“本地”和“全局”memory_limit 值有何看法?

  • 怎么指定限制,能发个代码sn-p吗?

【讨论】:

【解决方案2】:

检查您的“安全模式”设置 - 如果启用,它可能会阻止您提高 memory_limit(尽管没有记录)。

【讨论】:

    【解决方案3】:

    您不能覆盖共享主机帐户的内存限制。这很简单。获得一个私人(专用)托管,然后您要求您的提供商将其一直设置(尽管不推荐)。

    【讨论】:

    • 在共享主机帐户上无法使用的原因是它们通常启用了safe_mode,而在我的本地计算机上并非如此。
    猜你喜欢
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2017-09-13
    • 2012-11-09
    • 1970-01-01
    • 2023-03-09
    • 2013-06-15
    • 2012-04-13
    相关资源
    最近更新 更多