PHP致命错误:允许的内存大小为268435456字节耗尽

时间:2017-06-05 18:41:38

标签: php

点击名为Test

的类别时出现以下错误

在stderr发送的FastCGI:

  

PHP消息:PHP致命错误:在第736行" /home/mydomain/public_html/app/functions/fn.catalog.php中,允许的内存大小为268435456字节(试图分配32个字节)从上游读取响应头时,客户端:24.xx.xx.xx,服务器:www.mydomain.com,请求:" GET / test-page-313 / HTTP / 1.1",上游:& #34; fastcgi://127.0.0.1:9000",主持人:" www.mydomain.com",推荐人:" http://www.mydomain....lesale-towels/"

我的736线如下

在我的php.ini我已经将memory_limit增加到= 1G

for ($qty = $min_qty; $qty <= $max_qty; $qty += $product['qty_step']) {
    $qty_content[] = $qty;
}

1 个答案:

答案 0 :(得分:0)

几种可能性:

  • $product['qty_step']不包含数字
  • 循环中有两个步骤可让您的程序在$qty_content数组中创建多个条目。

例如,如果你有:

$min_qty = 0;
$max_qty = 400000;
$product = array("qty_step" => 0.001);
$qty_content = [];

// The loop
for ($qty = $min_qty; $qty <= $max_qty; $qty += $product['qty_step']) {
    $qty_content[] = $qty;
}

该程序将尝试在数组中最多补充400000000个条目,这需要PHP无法处理的大量内存。所以它会抛出你所得到的错误。正如someones在你的问题评论中所说,尝试调试所有变量的内容,例如:

var_dump(
  array('qty' => $qty,
    'min_qty' => $min_qty,
    'max_qty' => $max_qty,
    'product["qty_step"]' => $product['qty_step'])
);

看看你得到了什么。在所有情况下,此错误意味着您占用了太多内存,因此您必须通过增加$product['qty_step']或减少$min_qty$max_qty之间的差异来减少循环的迭代。