PHP 5.3.3 中的 ini_set("memory_limit") 根本不起作用
我之前有过这样的工作:
echo ini_get("memory_limit")."\n";
ini_set("memory_limit","256M");
echo ini_get("memory_limit")."\n";
这将输入:
32M
256M
在由命令行执行的 php 脚本上。 我从 5.2 更新到 5.3,从现在开始,这个指令根本不起作用:这给了我:
32M
32M
然后让我的脚本因致命错误而失败...
我检查了 php 文档,并用 google 搜索了它,我没有'找不到“memory_limit”已被弃用的任何地方。
有人有解决办法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
Ubuntu 10.04 仅附带 Suhosin 补丁,它不提供配置选项。但是你可以安装 php5-suhosin 来解决这个问题:
现在你可以编辑 /etc/php5/conf.d/suhosin.ini 并设置:
然后使用 ini_set 将在脚本中工作:
Ubuntu 10.04 comes with the Suhosin patch only, which does not give you configuration options. But you can install php5-suhosin to solve this:
Now you can edit /etc/php5/conf.d/suhosin.ini and set:
Then using ini_set will work in a script:
让我们用 2 个示例进行测试:
上面的示例不适用于覆盖 memory_limit 值。
但这是可行的:
您必须将
ini_set('memory_limit','128M');
放在文件顶部或至少在任何回显之前。对于我来说, suhosin 不是解决方案,因为它甚至没有出现在我的 phpinfo() 中,但这有效:
Let's do a test with 2 examples:
The above example doesn't work for overriding the memory_limit value.
But This will work:
You have to place the
ini_set('memory_limit','128M');
at the top of the file or at least before any echo.As for me, suhosin wasn't the solution because it doesn't even appear in my phpinfo(), but this worked:
以下是值得检查的事项列表:
是否安装了 Suhosin?
ini_set
<代码>
ini_set('内存限制', '512'); // 没用
ini_set('内存限制', '512MB'); // 没用
ini_set('内存限制', '512M'); // 好的 - 512MB
ini_set('内存限制', 512000000); // 好的 - 512MB
http://php.net/manual/en/ini.core .php#ini.memory-limit
http://php.net/manual/en/configuration.changes.php
Here's a list of things that are worth checking:
Is Suhosin installed?
ini_set
ini_set('memory_limit', '512'); // DIDN'T WORK
ini_set('memory_limit', '512MB'); // DIDN'T WORK
ini_set('memory_limit', '512M'); // OK - 512MB
ini_set('memory_limit', 512000000); // OK - 512MB
http://php.net/manual/en/ini.core.php#ini.memory-limit
http://php.net/manual/en/configuration.changes.php
很可能您的 suhosin 已更新,这将 suhosin.memory_limit 的默认值从禁用更改为 0(这将不允许对 memory_limit 进行任何更新)。
在 Debian 上,更改 /etc/php5/conf.d/suhosin.ini
至
或您喜欢的任何值。您可以在 http://www.hardened-php.net/hphp/changelog.html,其中写着:
Most likely your sushosin updated, which changed the default of suhosin.memory_limit from disabled to 0 (which won't allow any updates to memory_limit).
On Debian, change /etc/php5/conf.d/suhosin.ini
to
Or whichever value you are comfortable with. You can find the changelog of Sushosin at http://www.hardened-php.net/hphp/changelog.html, which says:
如果您启用了 suhosin 扩展,它可以防止脚本将内存限制设置为超出其启动值或某个定义的上限。
http://www.hardened-php.net/suhosin/configuration.html #suhosin.memory_limit
If you have the suhosin extension enabled, it can prevent scripts from setting the memory limit beyond what it started with or some defined cap.
http://www.hardened-php.net/suhosin/configuration.html#suhosin.memory_limit
对我有用,与 PHP 5.3 无关。就像许多此类选项一样,当启用 safe_mode 时,它不能通过
ini_set()
覆盖。检查更新的php.ini
(更好的是:也更改那里的内存限制)。Works for me, has nothing to do with PHP 5.3. Just like many such options it cannot be overriden via
ini_set()
when safe_mode is enabled. Check your updatedphp.ini
(and better yet: change the memory_limit there too).