PHP内存限制在正常的PHP脚本中不起作用


PHP Memory limit not taking effect in normal php scripts

我已经将php的内存限制分配为999m,所以它像一样出现在phpinfo中

内存限制999M 999M

当我使用phpinfo()时;

不幸的是,当我尝试运行一个相当大的脚本时,似乎限制是256M

致命错误:允许的内存大小268435456字节已用尽(试图分配40字节),位于第1403行上的/xxx/wp-includes/wp-db.php中

任何人都有任何想法,为什么或我可以做什么来提高限制(并使其实际工作)

如果它有帮助的话,我运行centos5 32位,php在fcgi模式下运行

我也遇到过类似的问题,对我来说,这是一个额外的ini文件,被加载为"99 liip developer.ini"。在文件的顶部,memory_limit被定义为265M,它覆盖了php.ini中定义的memory_limit。

希望这能帮助到任何人。

键入php --ini以查找配置路径。

memory_limit更改为所需的任何值。请确保在以下两个文件上都进行了更改:php.iniconf.d/php-memory-limits.ini

(在我的情况下,我使用-1来拥有无限的内存(当然,不是无限的,而是我的计算机可以处理的内存)

我建议您将其设置在脚本的顶部:

 ini_set("memory_limit","512M");

在消耗大量内存的脚本中,而不是允许所有脚本都消耗大量内存。你也可以把它放在你的/wp-includes/的.htaccess中

 php_value memory_limit 512M

更多信息和解释请点击此处:http://www.mydigitallife.info/php-allowed-memory-size-exchausted-fatal-error/

创建一个名为test.php的php文件,放入:

<?php
phpinfo();
?>

检查"配置文件(php.ini)路径"answers"Loaded Configuration File"以查看正确的php.ini路径。编辑php.ini并搜索memory_limit,并将其设置为:

memory_limit = 999M

检查php.ini文件中是否存在多次memory_limit。在这种情况下,删除它。

停止apache,然后重新启动它(apachectlrestart|apachectlmanent|kill-1不好。停止,然后启动)。

重新检查test.php以查看是否获取了新参数。

您可以尝试将其放在文件的顶部

ini_set('memory_limit', '999M')

您有多少系统内存可用?您是否在编辑php.ini文件后重新启动Apache(我假设您已经将php作为一个模块安装)?

尝试:

sudo /etc/init.d/httpd restart

不确定,但这出现在谷歌搜索中:

http://wordpress.org/support/topic/plugin-cbnet-ping-optimizer-lots-of-errors-on-ping-optimizer-_help-please

ping优化器在数据库中填充了一个满表,然后清除就解决了这个问题。错误几乎相同:

致命错误:允许的内存大小268435456字节已用尽(已尝试分配80个字节)/home/user1/public_html/domain/wp-includes/wp-db.php,第1400行

所以,看看一个插件是否也在做同样的事情,然后清除它并将其记录在WP的某个地方,这样就可以修复问题了。

确保apache中的服务器/虚拟服务器未配置为覆盖PHP配置。即使您使用:

php_value memory_limit 512M

你的服务器可能有类似的东西:

php_value memory_limit 32M

这将使您在php.ini中的更改变得毫无用处。要解决此问题:

  • 在服务器配置中编辑php_value值
  • 或者将其从web服务器中删除,使其使用PHP全局设置