PhpMyAdmin |致命错误:第0行的Unknown中允许的内存大小为134217728字节(尝试分配xxxxxx字节)

时间:2013-12-23 14:43:02

标签: php mysql phpmyadmin fatal-error

我想找到这个错误的原因,但我失败了。我已经在我的服务器上安装了PhpMyAdmin,现在每页的页脚都出现了这个错误:

  

致命错误:第0行的Unknown中允许的内存大小为134217728个字节(尝试分配10934248个字节)

正如你所看到的,我已尝试升级memory_limit(从2MB到128MB),但我仍然遇到此错误。现在每次我登录PhpMyAdmin控制台时都会出现,如果我不进行任何操作,也会出现。你有什么建议吗?

我试图按照我在网上找到的一些答案,但似乎没有人解决问题。此外,我找不到抛出错误的文件,因为它是“未知”,我无法理解谁会要求这么多的内存。

5 个答案:

答案 0 :(得分:1)

在php脚本中执行此操作,

ini_set('memory_limit', '-1');  // -1 here implies no limit, you can even set it to a bigger number like '192M' for 192Mb space.

这将覆盖默认的内存限制。

这个问题已经多次回答过了。

答案 1 :(得分:1)

不要使用128MB使用128M,严重的是,尝试一下。

答案 2 :(得分:1)

我意识到这是一个老问题,但我今天开始在运行Linode虚拟服务器的Apache上遇到同样的问题。就我而言,解决方案只是启用Zend Opcache 。它由于'/etc/php5/apache2/conf.d/'目录中的一个ini文件中的错误而被禁用。

我遇到了间歇性的错误,大多数时候页面和图像都会加载得很好,但偶尔会出现故障。图像将被破坏,而不是看到一个页面,我会得到“连接错误”。

这些是我在Apache的error.log文件中看到的一些其他错误:

[core:notice] [pid 8186] AH00052: child pid 9008 exit signal Segmentation fault (11)
[core:notice] [pid 8186] AH00052: child pid 9007 exit signal Aborted (6)
*** Error in `/usr/sbin/apache2': free(): invalid pointer: 0x00007f56840b63c0 ***

当然臭名昭着:

[:error] [pid 8829] [client nnn.nnn.nnn.n:24471] PHP Fatal error:
  Allowed memory size of 134217728 bytes exhausted (tried to 
  allocate 94008222532912 bytes) in Unknown on line 0, referer:
  https://www.mysiteurlhere.com/node/page

启用zend opcache后,error.log中不再有错误,一切正常。

答案 3 :(得分:0)

如果php.ini的更改对您没有影响,请尝试更改phpmyadmin的 config.inc.php 。在大多数情况下,它位于/ etc / phpmyadmin。在?>标记之前插入行:

$cfg['ExecTimeLimit'] = 300000;
$cfg['MemoryLimit'] = -1;

您可以将$cfg['MemoryLimit']设置为0.在这种情况下,该值将取自php.ini

答案 4 :(得分:0)

当数据库中的表数超过9400时,我遇到了同样的问题。

仅当我使用phpmyadmin输入对数据库的查询时,问题才出现。一段时间后,在屏幕上开始输入查询后,出现500错误并记录了错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 10934248 bytes) in Unknown on line 0

解决方案是将db_sql_autocomplete.php中的部分代码注释掉,该文件位于phpmyadmin文件夹中。

代码 db_sql_autocomplete.php

<?php
 
use PhpMyAdmin\Response;
require_once 'libraries/common.inc.php';

/*
if ($GLOBALS['cfg']['EnableAutocompleteForTablesAndColumns']) {
    $db = isset($_POST['db']) ? $_POST['db'] : $GLOBALS['db'];
    $sql_autocomplete = array();
    if ($db) {
        $tableNames = $GLOBALS['dbi']->getTables($db);
        foreach ($tableNames as $tableName) {
            $sql_autocomplete[$tableName] = $GLOBALS['dbi']->getColumns(
                $db, $tableName
            );
        }
    }
} else {*/
    $sql_autocomplete = true;
//}
$response = Response::getInstance();
$response->addJSON("tables", json_encode($sql_autocomplete));