ini_set('memory_limit', ...)无效并返回false;无法确定原因。

6
ini_set('memory_limit', '128M'); // Returns false; memory_limit unchanged

我无法找到导致此问题的原因列表。 到目前为止,我已经检查了以下内容:

  • 安全模式:禁用
  • disable_functions:空
  • php_admin_value:没有我能找到的(有确定的方法吗?)

我没有更多的想法了!ini_set与其他参数(如“display_errors”)正常工作。


你正在使用哪个版本的PHP? - James C
ini_set() 函数传递的任何指令都会失败吗?还是只有 memory_limit 失败?任何 memory_limit 的值都会失败,还是只有 128M?您如何验证该值未更改?我也注意到在这里的几台服务器上出现了这种行为,所以我非常想知道我们是否遇到了同样的问题。 - user212218
你是使用共享托管平台还是自己设置/配置的机器? - James C
@James:我正在使用PHP版本5.2.6-1+lenny9。 - Andreas Bonini
@Phoenix:它只在memory_limit失败。我通过调用ini_get来验证该值未更改。 - Andreas Bonini
@James问题2:这是我们的网络管理员设置的专用服务器。这是我们测试代码的开发服务器;在实时服务器上,ini_set可以正常工作。 - Andreas Bonini
2个回答

7
如果已经确认不是PHP版本的问题,请检查是否有任何机器上的东西阻止你提高这个限制。
如何检查Suhosin是否安装,请参见此处
编辑(在确认安装了Suhosin之后):
配置详细信息在此处:http://www.hardened-php.net/suhosin/configuration.html 我怀疑在/etc/php.d/中会有一个文件,你可以编辑它来增加内存限制。你需要编辑的配置变量是:suhosin.memory_limit

太好了!这个服务器受到Suhosin Patch 0.9.10的保护。那是什么?我会尝试谷歌一下,看看它是否是问题所在。 - Andreas Bonini
可能是这个问题,但我找不到一个设置选项,说“不要超过64M”... 你知道它可能被配置在哪里吗?或者默认就是这样工作的?无论如何,我已经为我们的网络管理员打开了一个工单,希望他能够解决这个问题。 - Andreas Bonini
好的,我们的网络管理员更改了suhosin选项,现在它可以工作了。谢谢。 - Andreas Bonini

1

手册中写道:

在 PHP 5.2.1 之前,为了使用这个指令,必须在编译时使用 --enable-memory-limit 在配置行中启用。

这可能是你问题的原因。


1
我们使用的是 PHP 版本 5.2.6-1+lenny9,所以“不幸的是”,它不是问题 =( - Andreas Bonini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接